2013-04-02 5 views
2

Im получают следующее сообщение об ошибке:WPF Ошибка: «Не удается найти правящую FrameworkElement или рамку ...»

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=ImagePath; DataItem=null; target element is 'VisualBrush' (HashCode=52892165); target property is 'Visual' (type 'Visual')

Я пытаюсь установить Canvas тип из MainWindow моих (Названного SearchTextBox) собственностей ImagePathWPF Control , поэтому контроль показывает это. Этот Canvas обертывает путь значка. Когда я пытаюсь и запустить его я не могу видеть значок и я получаю:

System.Windows.Data Error: 2.

Это мой код:

Моей WPF управления:

SearchTextBox.cs:

public static readonly DependencyProperty ImagePathProperty = 
      DependencyProperty.Register(
         "ImagePath", 
         typeof(Canvas), 
         typeof(SearchTextBox)); 

public Canvas ImagePath 
    { 
     get { return (Canvas)GetValue(ImagePathProperty); } 
     set { SetValue(ImagePathProperty, value); } 
    } 

Generic.xaml

<Border x:Name="PART_SearchIconBorder" 
         Grid.Column="2" 
         VerticalAlignment="Stretch" 
         HorizontalAlignment="Stretch" 
         BorderBrush="{StaticResource SearchTextBox_SearchIconBorder}"> 
          <Rectangle 
           Width="15" 
           Height="15"> 
           <Rectangle.Fill> 
            <VisualBrush Stretch="Fill" 
             Visual="{Binding ImagePath}" /> 
           </Rectangle.Fill> 
          </Rectangle> 

Мой Вид:

<Controls:MetroWindow x:Class="TestUI.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:l="clr-namespace:UIControls;assembly=SearchTextBox" 
    xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
    Title="Window1" Height="423" Width="487"> 
<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/Icons.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 

     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 

<Grid>      //----appbar_add is the canvas 
    <l:SearchTextBox ImagePath="{StaticResource appbar_add}" Height="39" Margin="118,52,116,0" VerticalAlignment="Top" Name="m_txtTest" /> 
    <TextBox Margin="118,0,116,68" Name="m_txtSearchContent" Height="65" VerticalAlignment="Bottom" /> 
    <TextBlock HorizontalAlignment="Left" Margin="118,0,0,139" Width="107" Text="Search content" FontSize="14" Height="20" VerticalAlignment="Bottom" /> 
</Grid> 

Любые идеи? Заранее спасибо.

ответ

1

Я принимаю содержание в Generic.xaml является частью ControlTemplate для класса SearchTextBox. Поскольку это шаблон управления, вам необходимо использовать TemplateBinding для привязки к свойствам элемента управления, к которому применяется шаблон. Таким образом, изменение:

Visual="{Binding ImagePath}" 

в

Visual="{TemplateBinding ImagePath}" 
+0

Привет, да это решает ив ошибки были с, но до сих пор не могу видеть значок/изображение: /. Значки im используются из пакета nuget MahApps.Metro.Resources (http://mahapps.com/MahApps.Metro/#icons). Может быть, это невозможно сделать так, как я хочу? Спасибо за ваш ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^