0

我将 绑定text box到包含位于 中的数字(正数和负数)的变量ViewModel

当变量更改时, 中的列的大小text box也会更改(未定义列的大小)

我怎么知道该列在文本框中的文本之后没有改变(完全不清楚为什么会发生这种情况,如果有人知道我很想得到答案)

一些代码:

xml:

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

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

4

1 回答 1

1

您已经为 Grid 列设置了宽度。这个大小将被尊重,但它的内容仍然可以改变大小。

如果你不希望你的文本框改变大小,你应该设置它的Width属性。

如果您确实希望它改变大小但它必须保持在一定范围内,您可以使用该 Min- and MaxWidth属性。

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

于 2013-02-26T08:02:25.567 回答