gpt4 book ai didi

c# - 如何以编程方式将 System.Windows.Controls.Parameter 绑定(bind)到 Silverlight 中的 ComboBox 的 SelectedItem

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:08 27 4
gpt4 key购买 nike

我有来自 MSDN 的以下示例:

<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="25" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<riaControls:DomainDataSource Name="source" QueryName="GetProductsByColor" AutoLoad="true">
<riaControls:DomainDataSource.DomainContext>
<domain:ProductDomainContext />
</riaControls:DomainDataSource.DomainContext>
<riaControls:DomainDataSource.QueryParameters>
<riaControls:Parameter ParameterName="color" Value="{Binding ElementName=colorCombo, Path=SelectedItem.Content}" />
</riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>
<ComboBox Width="60" Grid.Row="0" x:Name="colorCombo">
<ComboBoxItem Content="Black" />
<ComboBoxItem Content="Blue" />
</ComboBox>
<data:DataGrid Grid.Row="1" ItemsSource="{Binding Data, ElementName=source}" />
</Grid>

好吧,如您所见,设置了创建参数绑定(bind)的行:

<riaControls:Parameter ParameterName="color" Value="{Binding ElementName=colorCombo, Path=SelectedItem.Content}" /> 

但是,如果我要用代码尝试这个,它不起作用:

Binding binding = new Binding();
binding.ElementName = "colorCombo";
//binding.Source = this.colorCombo; also doesn't work!
binding.Path = new PropertyPath("SelectedItem.Content");
binding.Mode = BindingMode.OneWay;

Parameter param = new Parameter();
param.Value = binding;

source.QueryParameters.Clear();
source.QueryParameters.Add(param);

对我做错了什么有什么想法吗?

最佳答案

要以编程方式绑定(bind),您必须使用 BindingOperations.SetBinding .目前,您只是将 Value 属性设置为 Binding 实例,而不是绑定(bind)它。

BindingOperations.SetBinding(param, Parameter.ValueProperty, binding)

另外,将您的绑定(bind)改回 Source = this.colorCombo。元素名称通常在 XAML 上下文中解析,它不存在于代码隐藏中。

关于c# - 如何以编程方式将 System.Windows.Controls.Parameter 绑定(bind)到 Silverlight 中的 ComboBox 的 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com