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