-1

同様の質問を見てきましたが、まだ必要なことを行うことができません。ユーザーコントロール内のラベルを介してチェックボックスの名前を出力する必要があります。

Window1.xaml:

<Window x:Class="WpfBinding.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfBinding" Title="Window1" Height="300" Width="300">
    <Grid>
        <CheckBox Name="checkBox1">
            <local:UserControl1></local:UserControl1>
        </CheckBox>
    </Grid>    
</Window>

UserControl1.xaml:

<UserControl x:Class="WpfBinding.UserControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Canvas>
        <Label Content="{Binding ElementName=checkBox1, Path=Name}"></Label>
    </Canvas>
</UserControl>

正しく行う方法は?私の知識不足は何ですか?手伝ってくれてありがとう。

4

2 に答える 2

1

ElementNameバインディングは in 内で機能しますsame XAML scope。これは動作します -

 <Grid>
    <CheckBox Name="checkBox1"/>
    <Label Content="{Binding ElementName=checkBox1, Path=Name}"/>
</Grid>

ただし、別の UserControl で実行する場合は、コードを少し調整して、Tag名前を保持するために使用する必要があります -

 <Grid>
    <CheckBox Name="checkBox1">
        <local:UserControl1 Tag="{Binding ElementName=checkBox1, Path=Name}"/>
    </CheckBox>
</Grid>

UserControl.xaml

<Canvas>
    <Label Content="{Binding Path=Tag, RelativeSource={RelativeSource
                       Mode=FindAncestor, AncestorType=UserControl}}"/>
</Canvas>

補足として、あなたUserControlはバインドする必要があることを知っており、それはあなたElementName = checkBox1だけがバインドしている名前です。その何かに相当する -

<Label Content="checkBox1"/>
于 2013-07-27T07:17:44.757 に答える