Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WP8上的XAML中设置用户控件中自定义样式按钮的内容_C#_Xaml_Windows Phone 8 - Fatal编程技术网

C# 在WP8上的XAML中设置用户控件中自定义样式按钮的内容

C# 在WP8上的XAML中设置用户控件中自定义样式按钮的内容,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,在WP8/XAML/C中,我为一种新型按钮创建了一个用户控件。我添加了一个名为Text的依赖属性,我想在其中设置按钮的文本。当我第一次设置按钮时,它就起作用了。例如,为了 <ui:JapanButton x:Name="JapanButton1" Text="Japan"></ui:JapanButton> 但是,这不会更新按钮上的文本。因此,似乎我在用户控件的绑定中做错了什么。这是我为该控件编写的XAML和C#代码 C#用户控件的代码隐藏 使用System.Win

在WP8/XAML/C中,我为一种新型按钮创建了一个用户控件。我添加了一个名为Text的依赖属性,我想在其中设置按钮的文本。当我第一次设置按钮时,它就起作用了。例如,为了

<ui:JapanButton x:Name="JapanButton1" Text="Japan"></ui:JapanButton>
但是,这不会更新按钮上的文本。因此,似乎我在用户控件的绑定中做错了什么。这是我为该控件编写的XAML和C#代码


C#用户控件的代码隐藏

使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
名称空间用户界面
{
公共部分类JapanButton:UserControl
{
公共静态只读DependencyProperty TextProperty=
DependencyProperty.Register(“文本”、typeof(字符串)、typeof(JapanButton)、null);
公共字符串文本
{
获取{return(string)GetValue(TextProperty);}
set{SetValue(TextProperty,value);}
}
公共双字号
{
获取{return(double)GetValue(FontSizeProperty);}
set{SetValue(FontSizeProperty,value);}
}
公共日本按钮()
{
初始化组件();
已加载+=已加载;
}
已加载专用void(对象发送方,RoutedEventArgs RoutedEventArgs)
{
var bindingTitle=新绑定();
bindingTitle.Source=文本;
ButtonJapan.SetBinding(ContentControl.ContentProperty,bindingTitle);
var bindingFontSize=新绑定();
bindingFontSize.Source=FontSize;
ButtonJapan.SetBinding(FontSizeProperty,bindingFontSize);
}
}
}

非常感谢您的帮助。

您没有使用NotifyPropertyChanged API来告诉UI文本或字体大小属性已更改。我的建议是实际删除绑定,并使用更改处理程序手动更新控件属性,根据:


我以前试过,但运气不好。首先,ButtonJapan是用户控件中的一个变量(请参见XAML中的x:Name),因此无法从静态方法中访问它。其次,不幸的是,type按钮不包含名为Text的属性。设置标题总是以设置内容结束,但我不能从字符串转换到内容。但也许我不太理解您提出的解决方案。为了最终工作,我必须替换
…=文本在最后一行中,带有
…=d、 GetValue(TextProperty)
并在
OnTextChanged
的签名中将
dependencProperty
替换为
DependencyObject
。谢谢你的帮助:)
JapanButton1.Text = "Not Japan";
    public static readonly DependencyProperty TextProperty =
        DependencyProperty.Register("Text", typeof(string), typeof(JapanButton), new PropertyMetadata(OnTextChanged));

    private static void OnTextChanged(DependencyProperty d, DependencyPropertyChangedEventArgs e)
    {
        (d as JapanButton).ButtonJapan.Content = Text;
    }