代码之家  ›  专栏  ›  技术社区  ›  MojoFilter

xaml中的值绑定语法是什么?

  •  2
  • MojoFilter  · 技术社区  · 17 年前

    <Border Name="TrackBackground"
        Margin="0"
        CornerRadius="2"                     
        Grid.Row="1"
        Grid.Column="1"
        Background="BlanchedAlmond"
        BorderThickness="1"
        Height="{TemplateBinding Height}">
    
        <Canvas Name="PART_Track" Background="DarkSalmon" Grid.Row="1" Grid.Column="1">
            <Thumb Name="ThumbKnob" Height="{Binding ElementName=Part_Track, Path=Height, Mode=OneWay}" />
        </Canvas>
    </Border>
    

    是数据绑定中断了。我得到一份工作 InvalidAttributeValue 拇指旋钮例外。我尝试运行此操作时的高度。我知道我肯定错过了一些基本的东西。塔克尔斯,请填写我的资料,我将无限感激。


    更改ElementName没有帮助。我一定还有别的东西没拿到。

    我应该提到的是,我正在Silverlight中进行测试。我从Internet Explorer中得到的确切信息是:

    XamlParseException: Invalid attribute value for property Height.

    这整件事都在ControlTemplate中。我正在做一个滑动控件,只是为了教自己一些概念。

    8 回复  |  直到 12 年前
        1
  •  2
  •   Brian Leahy    17 年前

    Silverlight不支持绑定上的ElementName属性。

        2
  •  1
  •   Arcturus    17 年前

    我通常做的是调试数据绑定,添加一个转换器,我可以在VS.NET中设置断点。。

    所以绑定应该是这样的:

    {Binding ElementName=PART_Track, Path=Height, Mode=OneWay, Converter={StaticResources DebugConverter}}
    

    别忘了将转换器添加到资源中。。。

    也许值是NaN?

        3
  •  1
  •   MojoFilter    17 年前

    好的,交易如下:

    昨天我有一封推荐信,但现在我想你只需要相信我的话:)

        4
  •  1
  •   C1pher    12 年前

    嗯,在这一点上,WPF和en Silverlight之间可能有很大的区别。。

    <Slider Width="400" Height="20">
        <Slider.Template>
            <ControlTemplate>
                <Border Name="TrackBackground"
                    Margin="0"
                    CornerRadius="2"                     
                    Grid.Row="1"
                    Grid.Column="1"
                    Background="BlanchedAlmond"
                    BorderThickness="1">
    
                    <Canvas x:Name="PART_Track" Background="DarkSalmon" Grid.Row="1" Grid.Column="1">
                        <Thumb Name="ThumbKnob" Height="{Binding ElementName=PART_Track, Path=Height, Mode=OneWay}" />
                    </Canvas>
                </Border>
            </ControlTemplate>
        </Slider.Template>
    </Slider>
    

    也许Silverlight在Thumb类中的属性更少。。。

    http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.thumb.aspx

        5
  •  0
  •   Arcturus    17 年前

    首先是套管的问题。。。

    改变

    Part_Track
    PART_Track

    但我不认为这是你想要做的。。

    您可以使用网格而不是画布,拇指将自动调整大小。画布并没有真正的高度,因为它并不真正关心它的孩子的高度。。。

    希望这有助于。。。

        6
  •  0
  •   Arcturus    17 年前

    边框是否在模板btw中?

    因为如果边框不在模板(ControlTemplate或DataTemplate)中,则不需要TemplateBinding

        7
  •  0
  •   Jason Roberts    16 年前

    Silverlight 3现在包括ElementName绑定。。。

    推荐文章