2014-01-14 27 views
1

我有一堆以下類型的錯誤 System.Windows.Data錯誤:2:找不到管理FrameworkElement或FrameworkContentElement的目標元素。WPF治理FrameworkElement找不到錯誤

我能解決大部分除了以下兩個。

第一個錯誤是

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=WColor; DataItem=null; target element is 'SolidColorBrush' (HashCode=34289570); target property is 'Color' (type 'Color') 

此錯誤的XAML代碼如下

<ControlTemplate.Triggers> 
     <DataTrigger Binding="{Binding Path=HasWColor}" Value="True"> 
      <Setter TargetName="HeaderIcon" Property="Fill"> 
       <Setter.Value> 
        <SolidColorBrush Color="{Binding Path=WColor, Converter={StaticResource ColorToBrushConverter}}"/> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
    </ControlTemplate> 

我能夠通過使用轉換器ColorToBrushConverter.解決我的應用程序的另一個文件非常類似的錯誤儘管如此,相同的轉換器不能工作。下面是代碼的工作原理。

<DataTemplate x:Key="GroupTemplate"> 
     <StackPanel x:Name="Group" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
      <Border BorderThickness="0,2,0,3" BorderBrush="{DynamicResource TableBorderBrush}"> 
       <Border BorderThickness="7,0,0,0" > 
        <Border.BorderBrush> 
         <SolidColorBrush Color="{Binding GroupColor, Converter={StaticResource ColorToBrushConverter}}"/> 
        </Border.BorderBrush> 
       </Border> 
      </Border> 
     </StackPanel> 
    <DataTemplate/> 

第二個錯誤是

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=TranslateY; DataItem=null; target element is 'TranslateTransform' (HashCode=10383263); target property is 'Y' (type 'Double') 

此錯誤的代碼是

<MultiDataTrigger.Setters> 
        <Setter Property="Visibility" Value="Visible"/> 
        <Setter Property="RenderTransform"> 
         <Setter.Value> 
          <TranslateTransform x:Name="myTransform"> 
           <TranslateTransform.X> 
            <MultiBinding Converter="{StaticResource OffsetConverter}"> 
             <Binding Path="DisplayedX"/> 
             <Binding ElementName="LinesGrid" Path="ActualWidth"/> 
             <Binding Source="17"/> 
            </MultiBinding> 
           </TranslateTransform.X> 
           <TranslateTransform.Y> 
            <MultiBinding Converter="{StaticResource OffsetConverter}"> 
             <Binding Path="TranslateY"/> 
             <Binding ElementName="PointsGrid" Path="ActualHeight"/> 
             <Binding Source="17"/> 
             <Binding Path="PointType"/> 
            </MultiBinding> 
           </TranslateTransform.Y> 
          </TranslateTransform> 
         </Setter.Value> 
        </Setter> 
       </MultiDataTrigger.Setters> 

我試圖給TranslateTransformx:Name財產在這個post但無濟於事建議。

關於如何擺脫這些錯誤的任何想法?

+0

HeaderIcon是什麼類型? – TrueEddie

+0

如果'ColorToBrushConverter'完成它的名稱狀態 - 轉換顏色 - >刷 - 那麼你不應該在這裏使用這個轉換器,因爲'SolidColorBrush.Color'帶有顏色,而不是刷子 – SOReader

+0

@TrueEddie:HeaderIcon是一個矩形。 – Tushar

回答

2

這是第一個,如果你想使用轉換器的黑客,你應該把它分配,而不是創建一個SolidColorBrush直接的Fill屬性,:

<Setter TargetName="HeaderIcon" Property="Fill" Value="{Binding Path=WColor, Converter={StaticResource ColorToBrushConverter}}"/> 

對於第二個,這是非常難修復沒有更多的調試信息。嘗試向轉換器添加一個斷點,查看錯誤是否在命中斷點之前或之後發生。

+0

你的建議是爲代碼工作。您似乎誤讀了哪些代碼導致錯誤,哪些不是。 錯誤是由'Binding Path = WColor'造成的 – Tushar

+0

我能夠通過不使用'solidcolorbrush'和直接使用'Fill'屬性來解決第一個錯誤。 @robertos:你可以編輯你的答案,以反映這一點。你可以編輯你的答案,以反映這一點。那麼我可以把它標記爲正確答案。 雖然我仍然無法解決第二個錯誤。轉換器可處理3個和4個參數。我不確定這會導致這個錯誤。 – Tushar