在我看来,我有一个TextBlock
控件,它Width
取决于Text
属性。
我正在寻找某种方法将 TextBlocks 绑定Width
到模型中的属性,其工作方式如下:
- 的设置
Width
必须基于自动完成Text
- 在我的按钮单击中,我想检索宽度
我已经尝试过下面的代码,但如果我没有在视图模型的构造函数中明确设置它,它会保持为Width
0。试过但没有区别,有什么建议吗?Mode=OneWayToSource
Mode=OneWay
看法:
<Grid>
<TextBlock Text="Some text" Width="{Binding TextWidth,Mode=OneWayToSource}" />
<Button Content="Show Width" Height="30" Width="90" Command="{Binding ShowTextWidth}" />
</Grid>
查看型号:
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private DelegateCommand<object> showTextWidth;
public DelegateCommand<object> ShowTextWidth
{
get { return showTextWidth; }
set { showTextWidth = value; }
}
private double textWidth;
public double TextWidth
{
get { return textWidth; }
set
{
textWidth = value;
OnPropertyChanged("TextWidth");
}
}
public ViewModel()
{
//If I explicitly specify the width it works:
//TextWidth = 100;
ShowTextWidth = new DelegateCommand<object>(ShowWidth);
}
private void ShowWidth(object parameter)
{
MessageBox.Show(TextWidth.ToString());
}
}