Silverlight UserControl资源不明确?

时间:2013-08-07 17:05:34

标签: silverlight xaml telerik radgrid

我对Silverlight / Telerik比较陌生,我如何将新添加的“LayoutRoot”网格中寻找的资源传递给最初的“UserControl.Resources”。

谢谢你, 我提前感谢任何帮助:)

<controls:ViewBase x:Class="CS.MyProgram.Silverlight.Module.Viewer.LoanTradingPnLDashboard.LoanTradingPnLViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:data="clr-namespace:CS.MyProgram.Library.Controls.Data;assembly=Library.Controls" 
xmlns:controls="clr-namespace:CS.MyProgram.Silverlight.Library.Controls;assembly=Library"
xmlns:libraryData="clr-namespace:CS.MyProgram.Library.Controls.Data;assembly=Library.Controls"
xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView" 
xmlns:telerikControl="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
xmlns:cal="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
xmlns:navigate="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation" 
xmlns:Controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" 
xmlns:Controls1="clr-namespace:CS.MyProgram.Library.Controls;assembly=Library.Controls" 
xmlns:Controls2="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Input" 
xmlns:asp="clr-namespace:System.Reflection.Emit;assembly=mscorlib" 
xmlns:Converters="clr-namespace:CS.MyProgram.Silverlight.Module.Viewer.LoanTradingDashboard.Converters;assembly=Viewer" 
xmlns:GenericComponents="clr-namespace:CS.MyProgram.Silverlight.ComponentLibraries.GenericComponents;assembly=GenericComponents" 
xmlns:Command="clr-namespace:CS.MyProgram.Silverlight.ComponentLibraries.GenericComponents.Command;assembly=GenericComponents"
xmlns:vcharting="clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts"
xmlns:telerikGridView="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView">

<Grid x:Name="LayoutRoot" >

    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <UserControl.Resources> <!-- !!!!!! This Line Has The Ambiguous Reference -->
        <!--STUFF LIKE THIS-->
        <telerikControl:Office_BlackTheme x:Key="Theme"/>
        <telerikControl:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
        <!--STUFF LIKE THIS-->
    </UserControl.Resources>

    <Grid x:Name="AnotherGrid" >
        <!--STUFF LIKE THIS-->
        <telerik:CustomDataGrid />
        <!--STUFF LIKE THIS-->
    </Grid>

</Grid>

1 个答案:

答案 0 :(得分:0)

我无法重现任何“模糊参考”错误。我用你的XAML得到的错误如下:

  

在'UserControl'类型中找不到可附加属性'Resources'。

名称为<Something.SomethingElse>的元素可以表示属于类SomethingElse的名称Something的附加属性(例如,Grid.Row),或者它可以指代({1}}类的非附加的SomethingElse依赖项属性,如果此元素是 Something 元素的直接子元素

在这种情况下,因为<Something>元素不是<UserControl.Resources>元素的直接子元素(它是<UserControl>的直接子元素),所以Silverlight会查找名为的附加属性<Grid>类型上的Resources,但不存在此类附加属性。

对此的修复非常简单:将UserControl更改为UserControl.Resources

Grid.Resources

<Grid.Resources> <!--STUFF LIKE THIS--> <telerikControl:Office_BlackTheme x:Key="Theme"/> <telerikControl:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> <!--STUFF LIKE THIS--> </Grid.Resources> 属性由ResourcesGrid以及来自FrameworkElement.Resources的众多其他类型继承,因此它不仅属于UserControl秒。实际上,如果您愿意,可以将其置于顶级UserControl元素下。如果您这样做,则必须将其命名为<controls:ViewBase>,因为它是<controls:ViewBase.Resources>元素的直接子项。