绑定到文本框中的文本会调整列的大小

时间:2013-02-26 07:22:11

标签: wpf mvvm textbox bind

我将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");
            }
        }
    }

所以,问题是当数字为负时,只会改变大小,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

您已为Grid列设置了宽度。这个尺寸将得到尊重,但它的内容仍然可以改变尺寸。

如果您不希望文本框改变大小,则应设置Width属性。

如果你确实希望它改变大小,但它必须保持一定的界限,你可以使用Min- and MaxWidth属性。

您还可以选择拉伸文本框:HorizontalAlignment="Stretch"这将强制它占用列中的所有空格。