WPF inicjalizacja komponentów ze statycznymi resoursami

0

Mam taki oto problem:
Tworze aplikacje w WPF (jeszcze nie MVVM), mam głowne okno programu, w ktorym wyswietlam Pasek menu (zdefiniowany jako UserControl). Pasek ten jest typem TabControl, który korzysta ze StaticResource w ktorym jest zapisany jego design. Kod wygląda tak:

 <UserControl x:Class="Reader.Views.LeftMenu"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Reader.Views"
             mc:Ignorable="d" >
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="MenuResource.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid>
        <TabControl Name="tcMenu" Template="{StaticResource MenuTabControl}">
            <TabItem Header="Data" >
        </TabControl>
    </Grid>
</UserControl>

Gdy główne okno programu inicjalizuje widoki poszczególnych zdefiniowanych przeze mnie okienek UserControl, wywołuje oczywiscie m.in konstruktor klasy menu a tam jest tylko metoda InitializeComponent() i tu jest problem, jeśli mam zdefiniowane Resours'y w xaml to dostaje XMLParserException gdy program dochodzi do czytania źródła resoursów.
Może ktoś podpowiedzieć dlaczego tak się dzieje ewentualnie co robię nie tak?

0

A skąd pomysł by tak przypisywać templata ? o ile sobie przypominam to templaty przypisauje się za pomocą styli.

0

Pomysł z książki: A. Nathan, WPF 4.5 Księga eksperta, od s.436,
Zdefiniowałem szablon ControlTemplate, tak jak to jest opisane, dołożyłem Klucz i typ docelowy:

 <ControlTemplate x:Key="MenuTabControl" TargetType="{x:Type TabControl}">

tylko wrzuciłem to do osobnego pliku .xaml bo szablon sie troche rozrósł. Autor po zdefiniowany controlTemplate w Jego przypadku do Buttona robi tak:

 <Button Template="{StaticResource buttonTemplate}">OK</Button>

wiec zrobiłem przez analogie, no i dalsza część już opisałem w pierwszym poście

0

Rzeczywiście tak też się da :D, jak dostajesz ten błąd to kliknij na ViewDetail -> a potem InnerException, podejrzewam że znajdziesz tam coś w stylu "{"Cannot locate resource 'MenuResource.xaml'."}", co będzie oznaczało że ścieka do pliku zasobów jest niepoprawna.

0

I wszystko jasne, jest tak jak pisałeś, wszystkie okna typu UserControl wrzucilem do folderu View, a resoursy były w głównym katalogu, nie pomyślałem o tym, bo po podpięciu pliku z resoursami w oknie Design moje Menu przeedytowało wygląd na ten zdefiniowany w resoursach - wiec nawet nie pomyslalem o jakiejkolwiek mozliwosci błędu ścieżki... Głupi błąd... Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1