사용자 정의 textBox에 대해 ViewModel을 구현하려고합니다. 이것은 처음으로 this tutorial과 같은 ViewModel을 수행하는 것입니다.WPF TextBox with ViewModel
파일 탐색기 응용 프로그램에는 사용자 지정 TextBox "ExploreAddress"에 대한 주소를 보유하는 string address;
(컬렉션이 아님)이 하나만 있습니다.
이 사용자 정의 텍스트 상자는 텍스트와 이미지가 (현재 디렉토리에 대한 아이콘을 그리고 정적되지 않습니다)
public class ExploreAddressVM : INotifyPropertyChanged
{
private string _text;
private System.Windows.Media.ImageSource _image;
public string Text
{
get { return _text; }
set { _text = value; }
}
public System.Windows.Media.ImageSource Image
{
get { return _image; }
set { _image = value; }
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
XAML :
<UserControl.DataContext>
<l:ExploreAddressViewModel/>
</UserControl.DataContext>
<TextBox x:Name="txtAddress" Margin="34,5,32,0" TextWrapping="Wrap"
Text="{Binding Name}" Height="25"
VerticalAlignment="Top" FontWeight="Bold" MinHeight="25" MaxHeight="25">
<TextBox.Background>
<ImageBrush ImageSource="{Binding Image}" Stretch="None"/>
</TextBox.Background>
</TextBox>
이 결합 할 수있는 이상적인 솔루션입니다 사용자 정의 된 TextBox가있는 ViewModel
정가 :
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
exploreAddress = (ExploreAddressViewModel)base.DataContext;
exploreAddress.Text = "My Computer";
}
private void GoButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(txtAddress.Text);
}
를 내가 이런 식으로 한, 텍스트 상자가 비어, 나는 텍스트 상자 @murhaf 코드 –
배후에 바인딩과 질문을 업데이트 ViewModel의'Name' 속성이지만 코드가'Text' 속성을 할당하고 있습니다. 어느 것이 옳은가요? –
미안 해요. 속성 이름을 텍스트로 변경했지만 질문에서 업데이트하지 않았습니다. 여전히 'Name'이라고 생각합니다. –