Здравствуйте, У меня накопилось парочку вопросов по wpf может кто поможет мне из разрешить.
1. Столкнулся с моментом что надо сделать активацию контролла по инверсному сосотоянию checkbox, т.е. флажок в checkbox установлен, датагрид enabled=false, и на оборот. Смысл в том что при помощи binding с легкостью можно сделать вот так

        <StackPanel Orientation="Horizontal" Grid.Row="1" VerticalAlignment="Center" Width="Auto">
            <CheckBox Name="cb_en" Content="Вот этот флажок должен отключать соседний textbox" VerticalAlignment="Center"/>
            <TextBox Text="Это тот самый текстбокс который отключается когда в checkbox стоит флажок" VerticalAlignment="Center" Width="Auto" IsEnabled="{Binding IsChecked, ElementName=cb_en}" />
        </StackPanel>

но на самом деле требуется что то типа

IsEnabled="{Binding -IsChecked, ElementName=cb_en}"
IsEnabled="{Binding not IsChecked, ElementName=cb_en}"

Никто конечно не отменял вариант управления доступностью элементов по событию изменения статуса ( в коде писать), но хотелось бы использовать все таки модель привязок. есть еще вариант написать конвертор значений, но я не пойму как это делать.
2. Есть 2 связанные таблицы, например сотрудники с набором полей фамилии имени отчества и ид, а также таблица выдачи премии (например) где есть поле ид сотрудника который получил премию и ее величина. Смысл в том что когда я связываю эти значения в datagride вот так

                <DataGridComboBoxColumn
                    ItemsSource="{Binding Source={StaticResource FIO}}" 
                    Header="Фамилия"
                    SelectedValueBinding="{Binding FIOID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                    SelectedValuePath="ID"
                    DisplayMemberPath="Family"
                    Width="Auto"/>

то при попытке отсортировать по этому полю сортировка проводится не по значению коллекции FIO.Family, а по значению FIOID и результат получается непредсказуемый. есть вариант использовать SortMemberPath="" но что именно туда заносить не пойму, логично было бы Family, но это не правильно получается так как он требует поле из datacontext.
3. Необходимо было что бы в datepicker можно было выбрать только месяц, то есть нажимаете на получить дату, открывается календарь с сеткой месяцев, а не дней и после щелчка на любой месяц окно календаря закрывается и в текстовое поле заносится надпись вида "май 2014"
Если в контролле calendar мне еще получилось добиться того что бы выбирался только месяц,(необходим так же контроль свойства DisplayMode="Year" то в datepicker у меня этого не получилось
По идее выходом является создание новой группы компонентов из календаря и текстбокса с прописыванием полной логики, но хотелось бы использовать компонент datepicker, наверняка можно его заставить себя вести так как хочется.
пока все может еще что вспомню напишу.
ps для тестов тут вот есть проект который демонстрирует эти проблемы (MS VisStudio 2013)