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

.net xaml中的值绑定语法是什么?,.net,wpf,silverlight,xaml,binding,.net,Wpf,Silverlight,Xaml,Binding,我正在学习WPF中的绑定。不过,我在调试xaml中的解析错误时遇到了很多麻烦。谁能告诉我这件小东西怎么了 <Border Name="TrackBackground" Margin="0" CornerRadius="2" Grid.Row="1" Grid.Column="1" Background="BlanchedAlmond" BorderThickness="1" Height="{

我正在学习WPF中的绑定。不过,我在调试xaml中的解析错误时遇到了很多麻烦。谁能告诉我这件小东西怎么了

<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>

是数据绑定中断了。我尝试运行此操作时,ThumbKnob.Height出现了
InvalidateTributeValue
异常。我知道我肯定错过了一些基本的东西。塔克尔斯,请填写我的资料,我将无限感激


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

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

XamlParseException:属性高度的属性值无效。


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

首先,它是一个外壳的问题

更改将修复绑定错误

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

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


希望这有帮助…

模板中的边框是btw吗


因为如果边框不在模板(ControlTemplate或DataTemplate)中,就不需要TemplateBinding,所以我通常要调试数据绑定,就是添加一个转换器,在VS.NET中设置断点

所以绑定应该是这样的:

{Binding ElementName=PART_Track, Path=Height, Mode=OneWay, Converter={StaticResources DebugConverter}}
然后转换器可以是IValueConverter的空实现,在Convert方法中设置一个断点,然后查看高度设置为

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


也许值是NaN?

嗯,在这一点上,WPF和Silverlight之间可能存在很大的差异

即使在WPF窗口中编译和运行此示例,我似乎也没有遇到任何问题:

<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类中的属性更少


Silverlight不支持绑定上的ElementName属性

您会注意到,如果您进入代码隐藏或在类资源管理器中检查绑定对象,它没有名为ElementName的属性。

好的,下面是交易:

在silverlight中,不能以声明方式将值从一个UI元素绑定到另一个UI元素。我在这里尝试的唯一方法就是使用C代码


昨天我有一个关于这个的参考资料,但现在我想你必须相信我的话:)

Silverlight 3现在包括ElementName绑定…

只需注意:它在Silverlight 4中。(我想是3.5分)
{Binding ElementName=PART_Track, Path=Height, Mode=OneWay, Converter={StaticResources DebugConverter}}
<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>