2

これは可能だと思いますが、それを行う方法がわかりません。クラス レベル変数の値を、データ テンプレート内からコンバーターに渡す必要があります。

<DataTemplate x:Key="ResponseItemTemplate">
        <StackPanel Orientation="Horizontal" >
            <StackPanel.Visibility>
                <MultiBinding Converter="{StaticResource VisibilityConverter}">
                    <Binding Path="Key"/>
                    <Binding Path="CurrentLanguage"/> 
                </MultiBinding> 
            </StackPanel.Visibility>

            <TextBox Width="200" Text="{Binding Value}" />
        </StackPanel>
    </DataTemplate>

「キー」値はデータ テンプレートの応答アイテムに存在するため、これは正しく渡されますが、CurrentLanguage はクラス変数であり、コンバーターに正しく渡すことができません。何か案は?

4

3 に答える 3

1

返信ありがとうございます。これが最終的に使用する必要があったものです。

 <Binding Path="DataContext.CurrentLanguage" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}"/> 
于 2009-07-27T15:22:22.187 に答える
0

バインディング オブジェクトは次のように使用できます。

<Binding Source="{x:Static local:DataObject.MyData}" />

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c94682e5-ad16-42f9-973f-fd7588a9c0b5を参照してください。

于 2009-07-27T14:39:45.723 に答える
0

コンバーターをリソースとして定義すると、コード ビハインドでアクセスできます。コンバーターを取得したら、それにプロパティを設定できます。

var myVisConverter = (VisibilityConverter)window.Resources["VisibilityConverter"];
myVisConverter.CurrentLanguage = ...

編集OK、DataTemplate 内から親 DataContext にアクセスしようとしている場合は、いくつかのオプションがあります。最も簡単なのは、正しい DataContext でコントロールに名前を付けてから、そのコントロールにバインドすることです...

<Binding Path="DataContext.CurrentLanguage" ElementName="nameGivenToElement" />

Josh Smith は、継承された DataContext を取得する方法についての記事を書きました。

于 2009-07-27T13:46:19.730 に答える