我有一个usercontrol1.xaml,其中定义了资源:
install.packages("stringi", dependencies=TRUE, INSTALL_opts = c('--no-lock'))
然后在用户控制视图2中,我要遇到这种情况:
<UserControl x:Class="FrameworkDemo.usercontrol1View">
<UserControl.Resources>
<local:DemoManger x:Key="demoManager"/>
<local:DemoManagerConverterx x:Key="demoManagerConverter" Manager="{StaticResource strategyManager}"/>
</UserControl.Resources>
<telerik:RadTileView MinimizedItemsPosition="Top">
<telerik:RadTileViewItem>
<local:UserControl2View/>
</telerik:RadTileViewItem>
<telerik:RadTileViewItem>
........
</telerik:RadTileViewItem>
</telerik:RadTileView>
</UserControl>
我能够链接到 ItemSource 的父控件,但是对于转换器,我该怎么做?我无法将资源定义从control1移动到control2。 RadTileViewItem 内部无法添加其他资源。恰好在 usercontrol1View 中,我在 RadTileViewItem 中和 tabiteam 中都有一个 tabcontrol ,其中包括 UserControl2View 。
如何链接到covnerter的父资源?
答案 0 :(得分:1)
如何链接到covnerter的父资源?
不能。如果您需要在两个UserControls
中使用相同的转换器,则实际上是在错误的位置定义了资源。
您可以将其移动到您的App.xaml
文件中:
<Application x:Class="WpfApp1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp1"
StartupUri="MainWindow.xaml">
<Application.Resources>
...
<local:DemoManagerConverterx x:Key="demoManagerConverter" Manager="{StaticResource strategyManager}"/>
</Application.Resources>
</Application>
然后,您将可以在整个应用程序中引用它。另一个选择是在UserControl2
中定义另一个相同类型的资源:
<DockPanel>
<DockPanel.Resources>
<local:DemoManagerConverterx x:Key="demoManagerConverter" Manager="{StaticResource strategyManager}"/>
</DockPanel.Resources>
<ComboBox MinWidth="270" Margin="0,0,5,5"
ItemsSource="{Binding Path=Demos, RelativeSource={RelativeSource AncestorType={x:Type local:DemoManager}}}"
SelectedValue="{Binding Path=CurrentStrategy, Converter={StaticResource demoManagerConverter}, Mode=TwoWay}"
IsEnabled="{Binding CanRefreshExecutionList, ElementName=Instance}"
DropDownOpened="StrategyComboBox_DropDownOpened" />
</DockPanel>
但是您不能使用绑定引用在父元素中定义的资源。
答案 1 :(得分:0)
我想您想将转换器对象绑定到绑定的Converter
属性。
您不能绑定到绑定的Converter
属性,因为它不是“ DependencyProperty”。您可以访问资源对象并绑定它,例如到“标签”,但不能解决您的问题:
<ComboBox MinWidth="270" Margin="0,0,5,5"
ItemsSource="{Binding Path=Demos, RelativeSource={RelativeSource AncestorType={x:Type local:DemoManager}}}"
SelectedValue="{Binding Path=CurrentStrategy, Converter={ ????}, Mode=TwoWay}"
Tag="{Binding Path='Resources[demoManagerConverter]', RelativeSource={RelativeSource AncestorType={x:Type localFrameworkDemo:usercontrol1View}}}"
IsEnabled="{Binding CanRefreshExecutionList, ElementName=Instance}"
DropDownOpened="StrategyComboBox_DropDownOpened">
如果对象是嵌套的,则只需将Converter设置(不绑定)到资源对象:
Converter = {StaticResource demoManagerConverter}