0
我想實現ViewModel的自定義文本框,這是我第一次做一個ViewModel試圖做this tutorial。WPF文本框與ViewModel
它的文件資源管理器應用程序只有一個string address;
需要(不是一個集合),其中保存自定義文本框「ExploreAddress」的地址。
這個定製的文本框具有文本和圖像(圖標爲當前目錄,它不是靜態的)
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>
這是綁定的理想解決方案具有自定義文本框的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'屬性。哪一個是正確的? –
對不起,我將屬性名稱更改爲文本,但我沒有更新它的問題,考慮它仍然是'名稱' –