21

同じ 内のコントロールに依存するプロパティをバインドしようとしていますDataTemplate

説明する:

<DataTemplate>
    <StackPanel Orientation="Horizontal">
        <ComboBox x:Name="ComboList"
                  ItemsSource="{Binding StatTypes}"
                  SelectedItem="{Binding SelectedStatType, Mode=TwoWay, FallbackValue='Select a type'}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Text}"/>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

        <TextBox Grid.Column="1" MinWidth="40" Margin="5">
            <TextBox.Text>
                <Binding Path="StatValue">
                    <Binding.Converter>
                        <converter:PercentageConverter SelectedStatType="{Binding ElementName=ComboList, Path=SelectedItem}" />
                    </Binding.Converter>
                </Binding>
            </TextBox.Text>
        </TextBox>
    </StackPanel>
</DataTemplate>

しかし、 のプロパティPercentageConverterがこれによって設定されることはなく、その理由がわかりません。これは命名範囲の問題ですか? もしそうなら、私はそれが同じであるので、これは問題ではないと思いましDataTemplate た。

4

1 に答える 1

33

これはおそらくネームスコープの問題であり、バインディングはフレームワーク要素ではなく、その内部のオブジェクトは外部のネームスコープを共有せず、ツリーのバインディングも共有しないため、相対的なソースバインディングも失敗するはずです。

x:Reference代わりに使用してみることができます。別のメカニズムを使用します。

{Binding SelectedItem, Source={x:Reference ComboList}}
于 2012-07-14T22:03:09.927 に答える