Изменение значения свойства зависимости не вызывает событие изменения значения свойства в DataTemplate - PullRequest
0 голосов
/ 26 декабря 2011

Я построил UserControl со свойством зависимости следующим образом:

public MyUserContol()
{                
    InitializeComponent();
    SelectedString = "Defalut";
}

public string SelectedString
{
    get { return (string)GetValue(SelectedStringProperty); }
    set { SetValue(SelectedStringProperty, value); }
} 

// Using a DependencyProperty as the backing store for SelectedString.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedStringProperty =
    DependencyProperty.Register("SelectedString", typeof(string), typeof(MyUserContol),
    new FrameworkPropertyMetadata(OnSelectedStringPropertyChanged));

private static void OnSelectedStringPropertyChanged(DependencyObject source,
                                                    DependencyPropertyChangedEventArgs e)
{
    (source as MyUserContol).SelectedSatringChanged();
}

Когда я его использую, он работает нормально

<UserContol:MyUserControl SelectedClient="blabla" />

но в DataTemplate это не сработает!

<DataGrid1:DataGrid x:Name="dg"   ItemsSource="{Binding MyDataTable}">
    <DataGrid1:DataGrid.Columns>
        <DataGrid1:DataGridTemplateColumn SortMemberPath="[Client]" Header="Date" >
            <DataGrid1:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <UserContol:MyUserControl SelectedClient="blabla" >
                </DataTemplate>
            </DataGrid1:DataGridTemplateColumn.CellTemplate>
    </DataGrid1:DataGrid.Columns>
</DataGrid1:DataGrid>

Его значение не меняется на "блабла". Я знаю, что это не работает, потому что OnSelectedStringPropertyChanged не вызывается! Свойство остается значением по умолчанию, заданным конструктором.

Почему это не работает?

1 Ответ

0 голосов
/ 29 декабря 2011

Я нашел это !!!

Мне нужно было удалить из Ctor этот код:

  SelectedString = "Defalut";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...