我将text box
绑定到包含ViewModel
中的数字(正数和负数)的变量。
当变量发生变化时,text box
中列的大小也会发生变化(未定义列的大小)
我怎么能在文本框中的文字后面跟没有改变一栏(完全不清楚为什么会发生这种情况,如果有人知道我希望得到答案)
一些代码:
XAML:
<Grid Grid.Row="3" Grid.RowSpan="1" Margin="0" >
<Grid.RowDefinitions>
<RowDefinition Height="25" />
<RowDefinition Height="25" />
<RowDefinition Height="25" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
SOME ELEMENT
<TextBox IsReadOnly="True" Margin="3,2,0,2" Name="xName" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" HorizontalContentAlignment="Right" Text="{Binding VM.SomeProp}"/>//THE PROPBLEM TEXTBOX
<TextBlock Grid.Row="2" Grid.Column="2" Margin="3,2" Name="txtblockname" Text="txt" />
</Grid>
这是我的道具
private float _someProp;
public float SomeProp
{
get { return _someProp; }
set
{
if (_someProp!= value)
{
_someProp= value;
NotifyPropertyChanged("SomeProp");
}
}
}
所以,问题是当数字为负时,只会改变大小,为什么会发生这种情况?
答案 0 :(得分:1)
您已为Grid列设置了宽度。这个尺寸将得到尊重,但它的内容仍然可以改变尺寸。
如果您不希望文本框改变大小,则应设置Width
属性。
如果你确实希望它改变大小,但它必须保持一定的界限,你可以使用Min- and MaxWidth
属性。
您还可以选择拉伸文本框:HorizontalAlignment="Stretch"
这将强制它占用列中的所有空格。