如何使用XAML Setter设置自定义附加属性
嘿,我太懂你这种卡在XAML语法细节上的烦躁感了!其实问题就出在你多套了一层不必要的括号😉
你当前写的(MyCustomXMLNS:TextBoxExtend).MyProperty是错误的——在Style的Setter中设置附加属性时,正确的语法不需要给所有者类型(TextBoxExtend)单独加括号。正确的写法应该是直接把命名空间、所有者类型和属性名连起来:
<Setter Property="MyCustomXMLNS:TextBoxExtend.MyProperty" Value="..." />
给你一个完整的正确示例参考:
<Style TargetType="TextBox"> <Style.Triggers> <DataTrigger Binding="{Binding YourConditionProperty}" Value="True"> <Setter Property="Foreground" Value="Red" /> <!-- 这里是正确的附加属性Setter写法 --> <Setter Property="MyCustomXMLNS:TextBoxExtend.MyProperty" Value="DesiredValue" /> </DataTrigger> </Style.Triggers> </Style>
顺便补充个小知识点:只有当你在绑定路径中引用附加属性时,才需要用括号把整个附加属性路径包起来,比如:
<TextBlock Text="{Binding Path=(MyCustomXMLNS:TextBoxExtend.MyProperty), ElementName=TargetTextBox}" />
这下应该就能正常工作啦!
内容的提问来源于stack exchange,提问作者Faure Ugo




