WPF カスタム コントロールにいくつか問題があります。機能させようとしていますが、取得できません。
これが私の問題です。TextBox とほぼ同じ単純なカスタム コントロールを作成しています。このコントロールには "Texto" という名前の依存関係プロパティがあり、XAML とカスタム コントロールのバックコードの間のバインディングは正常に機能します。コードは次のとおりです。
<UserControl x:Class="WpfCustomControlLibrary1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="47" d:DesignWidth="147">
<Grid Height="43" Width="142">
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,8,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Texto}"/>
</Grid>
依存関係プロパティのコード:
public static readonly DependencyProperty TextoProperty = DependencyProperty.Register("Texto", typeof(string), typeof(UserControl1));
public string Texto
{
get
{
return (string)GetValue(TextoProperty);
}
set
{
SetValue(TextoProperty, value);
}
}
さて、問題は次のとおりです。他のウィンドウでこのコントロールを使用すると、「Texto」プロパティをビューモデルにバインドしようとしますが(他のすべてと同じくらい単純です)、ビューモデルのプロパティは変更されません:
ViewModel コード:
public class ViewModelTest
{
public string SomeText { get; set; }
}
アプリケーション ウィンドウのコード:
public ViewModelTest test;
public Window1()
{
InitializeComponent();
}
private void button1_Click_1(object sender, RoutedEventArgs e)
{
MessageBox.Show(test.SomeText);
MessageBox.Show(uc.Texto);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
test = new ViewModelTest();
this.DataContext = test;
}
ビューモデルのプロパティとのバインディング:
<my:UserControl1 HorizontalAlignment="Left" Margin="27,12,0,0" Name="uc" VerticalAlignment="Top" Texto="{Binding Path=SomeText,Mode=TwoWay}"/>
わかりやすくするために、カスタム コントロールに「Hello」と書いてから「button1」を押すと、最初のメッセージには何も表示されず、2 番目のメッセージには「Hello」と表示されます。
ご覧のとおり、私はこれにかなり慣れていないので、あなたの何人かが私を助けてくれることを願っています. ありがとう。