Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc
Titulní Blogy Fotky Soubory

ZazaBlog

WPF a data – také se Vám zdá, že ještě potřebuje dozrát?

K napsání této krátké úvahy mě inspiroval nedávný článek zde o tom, jak je ve WPF jednoduché udělat Master – Detail binding. Takže se zdá, že pracovat s daty bude hračka. Dokonce lze využít LINQ to SQL (de facto vlastně LINQ to COKOLI) a “jenom” to pospojovat.

Jenomže ono to nebude tak jednoduché. XAML soubory nebývají na dva řádky. Tohle je, na ukázku, XAML soubor z toho odkazu výše. Přestože příklad je primitivní, pár písmenek se tam najde. A je třeba tam dopsat informace o propojení na zdroje dat.

<Window x:Class="MasterDetailView.MainWindow"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Master - Detail View" Height="400">

    <Grid x:Name="gridMasterDetail">

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="200" />

            <ColumnDefinition Width="200" />

            <ColumnDefinition Width="200" />

            <ColumnDefinition Width="200" />

            <ColumnDefinition Width="200" />

        </Grid.ColumnDefinitions>

        <DockPanel Grid.Column="0">

            <Label DockPanel.Dock="Top">Region</Label>

            <ListBox ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>

        </DockPanel>

        <DockPanel Grid.Column="1">

            <Label DockPanel.Dock="Top">Division</Label>

            <ListBox ItemsSource="{Binding Path=Divisions}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name" />

        </DockPanel>

        <DockPanel Grid.Column="2">

            <Label DockPanel.Dock="Top">City</Label>

            <ListBox ItemsSource="{Binding Path=Divisions/Cities}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>

        </DockPanel>

        <DockPanel Grid.Column="3">

            <Label DockPanel.Dock="Top">District</Label>

            <ListBox ItemsSource="{Binding Path=Divisions/Cities/Districts}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name" />

        </DockPanel>

        <DockPanel Grid.Column="4">

            <Label DockPanel.Dock="Top">Street</Label>

            <ListBox ItemsSource="{Binding Path=Divisions/Cities/Districts/Streets}" DisplayMemberPath="Name" />

        </DockPanel>

    </Grid>

</Window>

Databázové aplikace, které typicky píšu, mívají v tabulce nějakých 35 sloupců, takže na formulářích je při bindingu docela nacpáno ;-)) Zatímco nápad s Binding Path je prostě skvělý, docela mi chybí možnost ty informace o Itemssource a DisplayMemberPath nějak smysluplně dostat do XAML souboru. Třeba pomocí okna Properties.

Dělal už někdo ze čtenářů nějakou Databázovou WPF aplikaci? Jak jste to řešili? A nevíte, jestli je ve VS 2010 v tomto ohledu nějak chudákovi vývojáři práce usnadněna?

Zveřejněno Sunday, June 07, 2009 8:38 AM by xzajic

Komentář

Žádné komentáře
Neregistrovaní uživatele nemužou přidávat komentáře.
Powered by Community Server (Personal Edition), by Telligent Systems