Winrt依赖项属性Visual Studio XAML错误
本文关键字:Studio XAML 错误 Visual 属性 依赖 Winrt | 更新日期: 2023-09-27 17:59:27
这是我的Dependency属性:
public static readonly DependencyProperty ButtonTapSoundProperty = DependencyProperty.RegisterAttached("ButtonTapSound", typeof (Uri), typeof (ButtonDependencyObject), new PropertyMetadata(default(Uri), UriChanged));
然后我这样使用它:
<Button buttonDependencyObject:ButtonDependencyObject.ButtonTapSound="{Binding ElementName=TapSound}" ... />
这在设计时和运行时都非常有效。
然而,如果我在这样的控制模板中定义它:
<ControlTemplate x:Name="TapSound" TargetType="Button">
<Button buttonDependencyObject:ButtonDependencyObject.ButtonTapSound="{Binding ElementName=TapSound}" ... />
</ControlTemplate>
它可以在运行时工作,但不能在Visual Studio设计器中工作
由于缺乏进一步的源代码,我只能参考msdn关于依赖属性的实现指南。
为从Button
派生的声音按钮创建一个单独的类,例如"SoundButton",并用getter和setter注册您的属性。
class SoundButton : Button
{
public Uri ButtonTapSound
{
get { return (Uri)GetValue(ButtonTapSoundProperty); }
set { SetValue(ButtonTapSoundProperty, value); }
}
public static readonly DependencyProperty ButtonTapSoundProperty =
DependencyProperty.Register("ButtonTapSound", typeof(Uri), typeof(SoundButton), new PropertyMetadata(default(Uri), new PropertyChangedCallback(OnUriChanged)));
private static void OnUriChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//Your code
}
}
然后,您可以在代码中按原样使用它,而无需在xaml:中注册dependency属性
<local:SoundButton ButtonTapSound="{Binding ElementName=TapSound}"></local:SoundButton>
这可能不是你的风格,但应该解决设计师的问题。