Я построил 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
не вызывается! Свойство остается значением по умолчанию, заданным конструктором.
Почему это не работает?