代码之家  ›  专栏  ›  技术社区  ›  phyllis diller

如何使用TabItem名称的参数调用XAML中的绑定方法?

  •  0
  • phyllis diller  · 技术社区  · 17 年前

    <ObjectDataProvider ObjectInstance="_this.DataContext" MethodName="GetListByCategory" x:Key="List">
            <ObjectDataProvider.MethodParameters>
                <System:String>Windows</System:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider> 
    

    1 回复  |  直到 17 年前
        1
  •  3
  •   Robert Macnee    17 年前

    不幸的是 MethodParameters ObjectDataProvider 不能直接绑定。

    TwoWay OneWayToSource Directory.GetFiles GetListByCategory

    <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>
    

    TabControl.SelectedItem ObjectDataProvider.MethodParameters[0] 使用OneWayToSource,这样当我们更改选项卡时,方法参数会更改为新目录。