我该如何解决?双向数据绑定无法正常工作

时间:2009-10-09 14:43:48

标签: xaml binding

我正在尝试连接滑块和文本框,以便文本框控制滑块位置,滑块位置会反映在文本框中。这是一个基本的双向元素到元素绑定。

我拥有 - 滑块位置显示在文本框中。调整滑块由文本框中的更新值反映。这就像预期一样。

问题 - 在文本框中输入值不会更新滑块位置。

我在网上找到了一些例子并经历了这些例子,但无法弄清楚我做错了什么。有什么建议吗?

我的代码包含在下面。

<Window x:Class="ScrollBarBinding.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="756">
    <Grid Margin="10">
        <Grid.Resources>
            <Style x:Key="txtStyle" TargetType="TextBox">
                <Setter Property="FontSize" Value="15pt"/>
                <Setter Property="HorizontalAlignment" Value="Stretch"/>
                <Setter Property="Margin" Value="10"/>
            </Style>
        </Grid.Resources>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="400"/>
        </Grid.ColumnDefinitions>
        <TextBox Name="txtie" Grid.Column="0" Style="{StaticResource txtStyle}" Text="{Binding ElementName=scrollie, Path=Value, Mode=TwoWay}" />
        <ScrollBar Name="scrollie" Orientation="Horizontal" Grid.Column="1" Minimum="0" Maximum="10" />
    </Grid>
</Window>

更新 - - -

我在Blend3中从头开始构建这个。它现在正在运作。我添加了UpdateSourceTrigger = PropertyChanged。我仍然愿意接受有关这是否是最佳解决方案的意见或建议。

<Grid x:Name="LayoutRoot">
   <TextBox HorizontalAlignment="Left"
       Margin="97.293,121.6,0,0"
       VerticalAlignment="Top"
       Width="139.2"
       Height="40.8"
       Text="{Binding Value, ElementName=slider, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
       TextWrapping="Wrap"/>
   <Slider x:Name="slider"
       Margin="97.293,0,194.707,140.8"
       VerticalAlignment="Bottom"
       Height="32.8"/>
</Grid>

1 个答案:

答案 0 :(得分:0)

是的,这就是我的方式。您还可以在滑块而不是文本框中添加绑定,并在没有UpdateSourceTrigger的情况下使用...

<Slider x:Name="slider"
        VerticalAlignment="Bottom"
        Height="32.8"
        Value="{Binding ElementName=txtie, Path=Text, Mode=TwoWay}" />

我会保留你如何拥有它。感觉滑块控件是主要焦点,文本框附加到它。

此外,您的原始示例有效,只是此方案中的默认行为是在文本框失去焦点而不是属性更改时更新绑定。