これは私のモデルです
public class PersonModel : INotifyPropertyChanged
{
private string _firstname;
public string FirstName
{
get {return _firstname; }
set { _firstname = value; RaisePropertyChanged("FirstName"); }
}
private string _lastname;
public string LastName
{
get { return _lastname; }
set { _lastname = value; RaisePropertyChanged("LastName"); }
}
public string FullName
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
protected void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
基本的にユーザーコントロールのビューがあります
<UserControl x:Class="WpfApplication1.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"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Visibility="{Binding HideStatus, Mode=TwoWay}">
<UserControl.DataContext>
<local:PersonViewModel></local:PersonViewModel>
</UserControl.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="117*"></RowDefinition>
<RowDefinition Height="33*"></RowDefinition>
<RowDefinition Height="75*"></RowDefinition>
<RowDefinition Height="75*"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="FirstName"></TextBlock>
<TextBox Text="{Binding FirstName,Mode=TwoWay}" Name="txtFirstName" Margin="115,0,0,67" DataContext="{Binding Path=Person}" Background="#FFF0F0F0" />
<TextBlock Text="FirstName" Margin="0,71,0,0" Grid.RowSpan="2"></TextBlock>
<TextBox Text="{Binding LastName,Mode=TwoWay}" Name="txtLastName" Margin="115,90,0,12" Background="#FFF0F0F0" DataContext="{Binding Path=Person}" Grid.RowSpan="2" />
<Button Grid.Row="3" Content="Button" Height="29" HorizontalAlignment="Left" Margin="12,23,0,0" Name="button1" VerticalAlignment="Top" Width="75" Command="{Binding UpdateView}" />
</Grid>
「メインUIから更新」ボタンが1つあるメインウィンドウと、作成済みのユーザーコントロール
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525"
xmlns:model="clr-namespace:WpfApplication1"
>
<Grid>
<Grid.DataContext>
<local:PersonViewModel/>
</Grid.DataContext>
<local:UserControl1 x:Name="control1" />
<Button Content="Update From Main UI" Height="23" Command="{Binding UpdateView}" HorizontalAlignment="Left" Margin="358,276,0,0" Name="button1" VerticalAlignment="Top" Width="145" />
</Grid>
問題は、ユーザーコントロール内のボタンをクリックすると変更が更新されることですが、メインウィンドウからボタンをクリックしようとすると同じことが起こりません。何が問題ですか?