附财产声明
本文关键字:声明 财产 | 更新日期: 2023-09-27 18:16:36
我已经创建了一个附加属性来添加到UserControls。这个附加属性需要一个绑定,而这个绑定需要一个转换器。
由于资源是在UserControl声明之后设置的,我正在寻找一种在资源创建之后声明附加属性的方法。我该怎么做呢?
例如,如果我将背景定义为静态资源,我不能在控件创建时设置背景,但在资源创建后:
<UserControl ...
...
...>
<UserControl.Resources>
background color declared
</UserControl.Resrouces>
<UserControl.Background>
usage of the StaticResource here is valid.
</UserControl.Background>
所以我想和附加属性一样我通常定义为:
<UserControl xx:MyAttachedProperty.Bla="{Binding A}" >
但是当我需要一个转换器时,我想在资源之后指定它。
希望这是清楚的。谢谢。
您可以使用ResourceDictionary
。
只需在解决方案资源管理器中添加Add -> Resource dictionary
在这里声明你的Converter
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
</ResourceDictionary>
在您的XAML
中,您可以像
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
现在你可以在你有Resource Dictionary
的地方使用Converter
如果你只需要你的UserControl
中的Converter
(正如你在上面的评论中提到的),那么你仍然可以这样声明它:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResources.xaml" />
<ResourceDictionary>
<BooleanToVisibilityConverter x:Key="MyConverter" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
我只是使用BooleanToVisibilityConverter
为例,但很容易使用自己的转换器在那里。
您可以将Converter
定义为资源1层次结构,作为Window
或App
的一部分,然后您可以像您想要的那样使用它。
此外,将公共资源移动到应用程序级别可以让您利用re-usability
,不同的用户控件可以共享。移动你的转换器到App.xaml
-
<App.Resources>
<!-- Your converter here -->
</App.Resources>