使用xaml元素绑定从组合框绑定silverlight网格列
我想向xamgrid添加一个未绑定的列,但我想从combox获取值,combobox在运行时绑定到channel对象 我尝试添加未绑定的列 尝试:使用xaml元素绑定从组合框绑定silverlight网格列,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,我想向xamgrid添加一个未绑定的列,但我想从combox获取值,combobox在运行时绑定到channel对象 我尝试添加未绑定的列 尝试: <Binding Source="{StaticResource ChannelTemplate}" Path="SelectedItem.Content" /> 但它似乎不起作用 我想把通道代码绑定到网格上 网格,下面是类代码 <UI:BaseControl.Resources> <Da
<Binding Source="{StaticResource ChannelTemplate}" Path="SelectedItem.Content" />
但它似乎不起作用
我想把通道代码绑定到网格上
网格,下面是类代码
<UI:BaseControl.Resources>
<DataTemplate x:Key="ChannelTemplate" >
<StackPanel Orientation="Horizontal" >
<TextBlock Margin="2" Text="{Binding Path=ChannelName}"/>
</StackPanel>
</DataTemplate>
</UI:BaseControl.Resources>
<ComboBox Name="CboChannel" Margin="59,6,0,0" Height="22" Width="200" VerticalAlignment="Top" HorizontalAlignment="Left" ItemTemplate="{StaticResource ChannelTemplate}" >
</ComboBox>
<ig:XamGrid Name="grdInventory" ColumnWidth="auto" ....
<ig:XamGrid.Columns>
<ig:UnboundColumn Key="Channel">
<ig:UnboundColumn.ItemTemplate>
<DataTemplate >
<TextBlock >
<TextBlock.Text >
<Binding Source="{StaticResource ChannelTemplate}" Path="SelectedItem.Content" />
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ig:UnboundColumn.ItemTemplate>
</ig:UnboundColumn>
</ig:XamGrid.Columns>
</ig:XamGrid>
代码:
谢谢
J您可以尝试使用DataContext模式,以便未绑定的列和组合框所选项都绑定到相同的值。例如,我在这里使用标准数据网格: 1基于本文创建DataContextProxy类: 2在包含网格和组合的页面上为DataContextProxy创建静态资源,例如
<UserControl.Resources>
<Silverlight:DataContextProxy x:Key="Proxy"></Silverlight:DataContextProxy>
</UserControl.Resources>
3将组合的SelectedValue属性绑定到VM上的公开属性,例如
<ComboBox Height="23"
HorizontalAlignment="Left"
SelectedValue="{Binding TestProperty, Mode=TwoWay}"
SelectedValuePath="Content"
Margin="126,54,0,0" x:Name="comboBox1"
VerticalAlignment="Top" Width="120" DisplayMemberPath="Content">
<ComboBox.Items>
<ComboBoxItem x:Name="x" Content="test2"></ComboBoxItem>
<ComboBoxItem x:Name="x2" Content="test"></ComboBoxItem>
</ComboBox.Items>
</ComboBox>
4将网格列模板绑定到相同的VM属性,例如
<sdk:DataGrid AutoGenerateColumns="True"
Height="120"
HorizontalAlignment="Left"
Margin="155,153,0,0"
Name="dataGrid1"
VerticalAlignment="Top" Width="120">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Test">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Mode=OneWay,Source={StaticResource Proxy},Path=DataSource.TestProperty}">
</TextBlock>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
当我开发了一个快速测试应用程序时,这对我来说很有效。DataGridTemplateColumn与所选combobox项保持同步。您可以尝试使用DataContext模式,以便未绑定的列和combobox所选项都绑定到相同的值。例如,我在这里使用标准数据网格: 1基于本文创建DataContextProxy类: 2在包含网格和组合的页面上为DataContextProxy创建静态资源,例如
<UserControl.Resources>
<Silverlight:DataContextProxy x:Key="Proxy"></Silverlight:DataContextProxy>
</UserControl.Resources>
3将组合的SelectedValue属性绑定到VM上的公开属性,例如
<ComboBox Height="23"
HorizontalAlignment="Left"
SelectedValue="{Binding TestProperty, Mode=TwoWay}"
SelectedValuePath="Content"
Margin="126,54,0,0" x:Name="comboBox1"
VerticalAlignment="Top" Width="120" DisplayMemberPath="Content">
<ComboBox.Items>
<ComboBoxItem x:Name="x" Content="test2"></ComboBoxItem>
<ComboBoxItem x:Name="x2" Content="test"></ComboBoxItem>
</ComboBox.Items>
</ComboBox>
4将网格列模板绑定到相同的VM属性,例如
<sdk:DataGrid AutoGenerateColumns="True"
Height="120"
HorizontalAlignment="Left"
Margin="155,153,0,0"
Name="dataGrid1"
VerticalAlignment="Top" Width="120">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Test">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Mode=OneWay,Source={StaticResource Proxy},Path=DataSource.TestProperty}">
</TextBlock>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
当我开发了一个快速测试应用程序时,这对我来说很有效。DataGridTemplateColumn与选定的组合框项保持同步