Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xaml元素绑定从组合框绑定silverlight网格列_Silverlight_Silverlight 4.0 - Fatal编程技术网

使用xaml元素绑定从组合框绑定silverlight网格列

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

我想向xamgrid添加一个未绑定的列,但我想从combox获取值,combobox在运行时绑定到channel对象

我尝试添加未绑定的列

尝试:

<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与选定的组合框项保持同步