我有一个在 XAML 中绑定的对象实例。它有一个方法,将返回给我其他对象的列表(根据我传递给此方法的属性值,它将返回具有该属性值的所有对象)。
<ObjectDataProvider ObjectInstance="_this.DataContext" MethodName="GetListByCategory" x:Key="List">
<ObjectDataProvider.MethodParameters>
<System:String>Windows</System:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
我(最终)想在带有一些复杂数据模板的选项卡上显示此列表。但不要超越自己。
我想要获取应在 TabControl 内的特定 TabItem 上显示的所有对象(具有与 TabItem 的名称或标题匹配的类别的对象 - 这是在方法中完成的)。如何将相关 TabItem 的标题或名称传递给我的绑定方法?
请记住,我需要绑定到此绑定方法的返回值,以显示在 TabItem 的 DataTemplate 中。我不知道这是否一定与问题的答案相关,但我想确保我清楚地定义了它。
不幸的是MethodParameters
of an ObjectDataProvider
不能直接绑定。
您可以通过使用来解决这个问题TwoWay
or OneWayToSource
捆绑。这是一个使用的示例Directory.GetFiles
作为你的替代品GetListByCategory
method:
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:io="clr-namespace:System.IO;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid.Resources>
<x:Array x:Key="directories" Type="{x:Type sys:String}">
<sys:String>C:\</sys:String>
<sys:String>C:\Windows\</sys:String>
<sys:String>C:\Windows\System32\</sys:String>
</x:Array>
<ObjectDataProvider x:Key="fileList" ObjectType="{x:Type io:Directory}" MethodName="GetFiles">
<ObjectDataProvider.MethodParameters>
<!-- Initial value, this will get wiped out by the Binding below. -->
<sys:String>C:\</sys:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Grid.Resources>
<TabControl ItemsSource="{StaticResource directories}">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate DataType="{x:Type sys:String}">
<ListBox ItemsSource="{Binding Source={StaticResource fileList}}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.ItemContainerStyle>
<TabControl.SelectedItem>
<Binding Source="{StaticResource fileList}"
Path="MethodParameters[0]"
BindsDirectlyToSource="True"
Mode="OneWayToSource"/>
</TabControl.SelectedItem>
</TabControl>
</Grid>
The TabControl.SelectedItem
绑定到ObjectDataProvider.MethodParameters[0]
使用 OneWayToSource,这样当我们更改选项卡时,方法参数就会更改为新目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)