2016-10-10 85 views
0

我試圖爲我的WPF應用程序創建自定義控件,並且無法理解它爲什麼不能正常工作。來自WPF應用程序中的自定義控件的異常

我有兩個項目 - 一個是我的自定義控件庫,其中一個自定義控件源自Image,只有很少的方法,第二個項目我想使用我的控件。我不想做任何樣式或綁定,所以我使用默認值。

所以,我的自定義控件主題(generic.xaml):

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:RTPlayer"> 
    <Style 
    TargetType="{x:Type local:RTPlayer}" BasedOn="{StaticResource {x:Type Image}}"> 
    </Style> 

和代碼部分:

namespace RTPlayer 
{ 
    public class RTPlayer : Image 
    { 
    static RTPlayer() 
    { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(RTPlayer), new FrameworkPropertyMetadata(typeof(RTPlayer))); 
    } 

    public void Start() 
    { 
     // .... 
    } 
    } 
} 

在我的主要項目中,我已經添加引用到我的圖書館。 DLL文件,我試圖使用控制:

<Window x:Class="rtspWPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:rtspWPF" 
    xmlns:CustomControls="clr-namespace:RTPlayer;assembly=RTPlayer" 
    xmlns:CustomControls="clr-namespace:RTPlayer;assembly=RTPlayer" 
    Title="MainWindow" Height="auto" Width="auto"> 
<CustomControls:RTPlayer x:Name="image" Margin="10,10,10,10" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="auto"/> 

問題是 - 1)xaml CustomControl:RTPlayer字符串警告我:「無法找到名爲」System.Windows.Controls.Image「的資源。資源名稱是區分大小寫的「; 2)如果我嘗試啓動應用其拋出Markup.XamlParseExceptionMarkup.StaticResourceHolder拋出異常..

什麼是錯我的代碼

+0

你可以發佈'XamlParseException.InnerException'的堆棧跟蹤嗎? – haindl

+1

圖像控件沒有可以在樣式中繼承的基礎樣式。 – 2016-10-10 18:27:23

回答

0

由於在評論丹尼爾回答,我。已經發現了,我應該怎麼做才能讓我的應用程序工作

丹尼爾告訴我之後,圖像組件行得有一個基本樣式,我發現呈三角問題傢伙:How to inherit type-based styles in WPF?

比我剛rewrited我一般.xaml文件到此:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:RTPlayer"> 

    <Style TargetType="Image" x:Key="ImageStyle"> 

    </Style> 

    <Style TargetType="{x:Type local:RTPlayer}" BasedOn="{StaticResource ImageStyle}"> 
    </Style> 
</ResourceDictionary> 

一切正常!