2013-07-23 34 views
10

Tôi đã tạo thư viện lớp điều khiển người dùng và tôi đã sử dụng tệp ResourceDictionary trong đó. Bây giờ, tôi muốn sử dụng usercontrol của tôi trong một ứng dụng WPF, nhưng tôi phải thêm tập tin ResourceDictionary một lần nữa trong projet của tôi! Nếu tôi không thêm nó, nó mang tệp ResourceDictionary và hiển thị lỗi trên khối MergeDictionaries! Tôi có thiếu gì đó không !?Thêm từ điển tài nguyên vào thư viện usercontrol trong wpf

điển Resource là:

<ControlTemplate x:Key="MoveThumbTemplate" TargetType="{x:Type s:MoveThumb}"> 
     <Rectangle Fill="Transparent" Cursor="Hand"/> 
    </ControlTemplate> 

    <Style x:Key="ItemStyle" TargetType="ContentControl"> 
     <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Canvas}},Path=ActualWidth}"/> 
     <Setter Property="MinHeight" Value="60"/> 
     <Setter Property="Height" Value="60"/> 
     <Setter Property="Content" Value="MyTextBox"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContentControl"> 
        <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}"> 
         <s:MoveThumb Template="{DynamicResource MoveThumbTemplate}"/> 
         <ContentPresenter Name="MainControl" Content="{TemplateBinding ContentControl.Content}" 
              Margin="5,0,10,0"/> 
         <Grid Opacity="0" Margin="-3"> 
          <s:ResizeThumb Height="3" Cursor="SizeNS" VerticalAlignment="Top" HorizontalAlignment="Stretch"/> 
          <s:ResizeThumb Height="3" Cursor="SizeNS" VerticalAlignment="Bottom" HorizontalAlignment="Stretch"/> 
         </Grid> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style>  
</ResourceDictionary> 

thêm cho người sử dụng kiểm soát:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/MoveResizeThumb.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

Trả lời

19

này cung cấp cho một thử:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/{YourAssemblyWhereResourceDictionaryIsLocated};component/Resources/MoveResizeThumb.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 
+2

này không làm việc cho tôi và nó lái xe cho tôi hoàn toàn điên vì khắp mọi nơi khác họ nói làm việc này - nhưng nó không! – ThisHandleNotInUse

+2

Điều này cũng yêu cầu một khóa cho dictionaty – OliverAssad

+0

Lưu ý rằng tất cả các tài nguyên khác cần phải nằm trong thẻ hoặc nó sẽ gây ra lỗi "đặt tài nguyên nhiều lần" – SlapY

2

Để trả lời cho @ThisHandleNotInUse và nhận xét @OliverAssad trong số được chấp nhận answer.

Trong trường hợp x:Key attribute required lỗi, thẻ ResourceDictionary nên được sửa đổi như sau:

<UserControl.Resources x:Key="myKey"> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/{YourAssemblyWhereResourceDictionaryIsLocated};component/Resources/MoveResizeThumb.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 
Các vấn đề liên quan