Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XAML: The property 'Resources' is set more than once

Tags:

wpf

xaml

I'm getting the following error:

The property 'Resources' is set more than once.

Here is my XAML:

<UserControl.Resources>     <!--Resource dictionaries for framework stuff-->     <ResourceDictionary>         <Style x:Key="MultiLineTextBox" TargetType="TextBox">             <Setter Property="BorderThickness" Value="0"/>             <Setter Property="TextWrapping" Value="WrapWithOverflow"/>         </Style>         <ResourceDictionary.MergedDictionaries>             <ResourceDictionary Source="/View;component/Common/ResourceDictionary.xaml"/>         </ResourceDictionary.MergedDictionaries>     </ResourceDictionary>      <!--Convertors needed for proper display-->     <c:CollapsedIfNegative x:Key="CollapseIfNegative"/>     <c:VisibleIfNegative x:Key="MakeVisibleIfNegative"/>     <c:ErrorCodeToString x:Key="ConvertErrorCodeToString"/> </UserControl.Resources> 
like image 777
Adam S Avatar asked Aug 06 '10 16:08

Adam S


1 Answers

The .Resources property in Xaml is clever: it's type ResourceDictionary but, if you don't explicitly put a <ResourceDictionary> tag around its content, the compiler will magically assume one for you. That's why you can usually just put your brushes straight into the markup.

However, you've started off by putting in your own ResourceDictionary - which I suspect has prevented that automatic behaviour - and so the compiler now thinks you're trying to set more than one value. If you rewrite like this you should get the result you're after:

<UserControl.Resources>     <!--Resource dictionaries for framework stuff-->     <ResourceDictionary>         <!--Convertors needed for proper display-->         <!-- move this INSIDE the ResourceDictionary tag -->         <c:CollapsedIfNegative x:Key="CollapseIfNegative"/>         <c:VisibleIfNegative x:Key="MakeVisibleIfNegative"/>         <c:ErrorCodeToString x:Key="ConvertErrorCodeToString"/>           <Style x:Key="MultiLineTextBox" TargetType="TextBox">             <Setter Property="BorderThickness" Value="0"/>             <Setter Property="TextWrapping" Value="WrapWithOverflow"/>         </Style>         <ResourceDictionary.MergedDictionaries>             <ResourceDictionary Source="/View;component/Common/ResourceDictionary.xaml"/>         </ResourceDictionary.MergedDictionaries>     </ResourceDictionary> </UserControl.Resources> 
like image 84
Dan Puzey Avatar answered Oct 02 '22 12:10

Dan Puzey