SimpleText という UserControls を作成し、MainWindow.xaml で参照しました。私の SimpleText にあるのは TextBox (tbox と呼ばれる) だけです。私の MainWindow には、別の TextBox (tbox2 と呼ばれます) があります。私が達成したいのは、その 2 つのテキスト ボックスの間に TwoWay バインディングを設定することです。
内部で何かを変更するには、UserControls のコードでプロパティを宣言する必要があることを stackoverflow で読みました (これが必要ない場合は修正してください)。
public string MyText
{
get { return tboxUser.Text; }
set { tboxUser.Text = value; }
}
次に、MainWindow.xaml から MyText にアクセスできますが、「静的」な値しか指定できません。
Window x:Class="WpfApplication11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication11"
Title="MainWindow" Height="350" Width="525">
<Grid>
<!-- <local:SimpleText MyText="Hello"/> Works !-->
<local:SimpleText MyText="{Binding Text, ElementName=tbox2}"/> <!--Does not work-->
<TextBox x:Name="tbox2" Margin="0,200,0,0" Text="Text Box 2" />
</Grid>
</Window>
次のようなエラーが表示されます。
タイプ 'SimpleText' の 'MyText' プロパティに 'Binding' を設定することはできません。「Binding」は、DependencyObject の DependencyProperty でのみ設定できます。
しかし、悲しいことに、私はここで非常に初心者であり、MyText を DependencyProperty にする方法がわかりません。ありがとう。