У меня есть пользовательский контроль, который я хочу использовать повторно, но я не могу найти способ изменить содержимое кнопки. Я уже попробовал все, что искал здесь. Если кто-то может сказать мне, чего не хватает, я был бы очень признателен, так как я пытался выяснить это весь день. вот мой код:
<UserControl x:Class="SamplePopupWPF.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid>
<StackPanel>
<Button x:Uid="btnLeft" Name="btnBindCmd" Height="23" Click="AddCommand" Content="{Binding ContentText, Mode=TwoWay}", DataContext="UserControl1"/>
</StackPanel>
</Grid>
Код для управления пользователем:
public string ContentText
{
get { return (string) GetValue(ContentTextProperty); }
set { SetValue(ContentTextProperty, value); }
}
public static readonly DependencyProperty ContentTextProperty = DependencyProperty.Register("ContentText", typeof (String), typeof (UserControl1),new IPropertyMetadata(String.Empty,textChangedCallback));
static void textChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
UserControl1 c = (UserControl1) d;
c.ContentText = e.NewValue as String;
}
вот Somepage, использующий элемент управления: "
<Grid >
<user:UserControl1 x:Name="btnTEST" AddCommandClick="onBtnClick" ContentText="{Binding OtherCmd, ElementName=UserControl1}" />
</Grid>
код для Somepage с помощью элемента управления:
public string OtherCmd
{
get { return _otherCmd; }
set
{
_otherCmd = value;
//if (this.PropertyChanged != null)
NotifyProperty("OtherCmd");
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
OtherCmd = "helloTest";
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyProperty(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
В какой-то момент я не использовал все коды, которые я поместил выше, но все еще не работает. Пожалуйста помоги. спасибо.