2015-03-09 3 views
1

В моем XamDataGrid у меня есть unboundField с multiBinding, один элемент происходит из коллекции, в которую привязан XamDataGrid, а другой «SelectedPipeMode» происходит из свойства в viewmodel. что означает, что имеет другой DataContext, чем коллекцииMultiBinding в Xamdatagrid

<igWPF:UnboundField Label="Pipe Output&#10;Width/Height" Width="auto"> 
    <igWPF:UnboundField.Binding> 
    <MultiBinding Converter="{StaticResource settingsOutputResToStringConverter}" > 
    <Binding Path="Key"/> 
    <Binding Path="SelectedPipeMode" RelativeSource="{RelativeSource AncestorType=sensorResolutionTables:SensorResolutionsTablesUserControl}"/> 
    </MultiBinding> 
    </igWPF:UnboundField.Binding> 
    <igWPF:UnboundField.Settings> 
    <igWPF:FieldSettings AllowEdit="False" SortComparer="{StaticResource customFilterComparer}" > 
    </igWPF:FieldSettings> 
</igWPF:UnboundField.Settings> 
</igWPF:UnboundField> 

Я хочу, чтобы преобразовать мой XamdataGrid в UserControl, так как я собираюсь использовать его.

это, как я использую мой новый пользовательский элемент управления:
<sensorResolutionTables:SensorResolutionsTablesUserControl Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="6" DataContext="{Binding SensorResolutionTablesViewModel}"/>

Можете ли вы увидеть свою ошибку?

Вот моя ошибка:

System.Windows.Data Warning: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='SkyCamWorkFlow.SensorResolutionTables.SensorResolutionsTablesUserControl', AncestorLevel='1''. BindingExpression:Path=SelectedPipeMode; DataItem=null; target element is 'ValueHolderWithDataContext' (HashCode=1650399); target property is 'Value' (type 'Object') 

ответ

1

К сожалению дать ответ так поздно, но я столкнулся с такой же вопрос и, возможно, это могло бы быть полезным для других, а также.

Во-первых, это НЕ ВАША ошибка, это больше о определении привязки сетки, которое является своего рода странным когда-то, ИМО.

Ваша привязка будет работать, если вы разместите ее внутри шаблона CellValuePresenter, используя статический ресурс.

<Style x:Key="PipeOutputPresenterStyle" TargetType="{x:Type igDP:CellValuePresenter}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5"> 
          <TextBlock.Text> 
           <MultiBinding Converter="{StaticResource settingsOutputResToStringConverter}" > 
    <Binding Path="DataItem.Key"/> 
    <Binding Path="SelectedPipeMode" RelativeSource="{RelativeSource AncestorType=sensorResolutionTables:SensorResolutionsTablesUserControl}"/> 
    </MultiBinding> 
          </TextBlock.Text> 
         </TextBlock> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Обратите внимание на один из ваших первоначальных путей MultiBinding, которые были обновлены с помощью DataItem. префикс !

Тогда ваш XamDataGrid UnboundField связывание должно выглядеть следующим образом:

<igWPF:UnboundField Label="Pipe Output&#10;Width/Height" Width="auto"> 
    <igWPF:UnboundField.Settings> 
    <igWPF:FieldSettings 
     CellValuePresenterStyle="{StaticResource PipeOutputPresenterStyle}" 
     AllowEdit="False" SortComparer="{StaticResource customFilterComparer}" /> 
    </igWPF:UnboundField.Settings> 
</igWPF:UnboundField> 

HTH