|
[Grafika]
[WebTip]
[Fotografování]
[Galerie]
[MujMac]
[Printing]
|
|||||||||
![]() |
||||||||||
|
|
|||||||||
Diskuzní forum: .NetTéma diskuze: Diskuze o technologii .NET; C# atd.Tip: nemáte rádi v textu smajlíky? Ruší vaše zdrojové kody? Vypněte si je! (Moje nastavení / Nastavení soukromí) [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 25. 05. 2009 12:22
Dobrý den.
Mám WPF aplikaci se dvěma ListView a první ovlivnuje druhý pomocí SelectionChanged="ListView_SelectionChanged" a potřebuji v C# dosáhnout toho abych tomu druhému v té metodě ListView_SelectionChanged vnutil jiný resource který je zaveden v <Window.Resources> a je to XmlDataProvider. Nevíte jak na to ? Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 25. 05. 2009 14:58
Už asi hodinu hledám na internetu, ale nic.
Vážně nikdo neví ? Nevíte aspon o nějaké alternativě ? Re: [WPF][C#] Binding
Vloženo uživatelem: JardaJirava (Jarda Jirava) - uživatel již zaslal 215 příspěvků (IP uloženo)
Datum: 25. 05. 2009 16:17
Ahoj, nevim, jestli jsem to podle popisu pochopil spravne. Ale je mozne, ze toto by ti mohlo pomoci http://www.codeproject.com/KB/WPF/SelectDetailLevels.aspx Pekny den Jarda Jirava, Microsoft MVP - Client Application, MCAD, MCPD http://jirava.net/blog Příspěvek zaslán emailem Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 25. 05. 2009 16:48
Tohle asi nebudu to co potřebuji.
Mám několik XmlDataProviderů (např. Product1, Product2, Product3, ProductList) v <Window.Resources> v XAMLu. První ListView zobrazuje data jednoho Resource (ProductList) a druhej by je měl taky ale až po kliknutí na daný řádek (taková specifikace produktu, tj. využije jeden z ProductX, id už mám získaný takže už mám i hotvý string například Product1 ale tedka podle něj najít a zvolit Resource) pomocí SelectionChanged. Všechno už mám připravený, jen nedokážu ten druhej ListView naplnit tím druhým resource. Pokud to furt není srozumitelné mohu poskytnout kód. Re: [WPF][C#] Binding
Vloženo uživatelem: JardaJirava (Jarda Jirava) - uživatel již zaslal 215 příspěvků (IP uloženo)
Datum: 25. 05. 2009 17:10
Ahoj, vidim v tom akorat rozdil ten, ze v prikladu uvedenem, se vybira template, ty potrebujes vybrat a bindovat ItemsSource. Proc trvas na obsluze udalosti? Pekny den Jarda Jirava, Microsoft MVP - Client Application, MCAD, MCPD http://jirava.net/blog Příspěvek zaslán emailem Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 25. 05. 2009 17:14
No ono jde o to že, v tom prvním ListViewu je seznam herních serverů (daza získané z XML) a po kliknutí na server chci aby se další listview naplnil daty z dalšího XML (tzn. získá data pro určitý server). Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 25. 05. 2009 18:15
Napadlo mě to udělat takhle :
var id = Servers.SelectedValue.ToString(); Binding bd = new Binding(); bd.Source = "StaticResource PlayersCS" + id; bd.XPath = "/Players/Player"; Jen nevím jak mám ten svůj bd nacpat tomu Listviewu jménem Players. Re: [WPF][C#] Binding
Vloženo uživatelem: JardaJirava (Jarda Jirava) - uživatel již zaslal 215 příspěvků (IP uloženo)
Datum: 25. 05. 2009 18:49
Ahoj, jde to i pres onen zmineny resource valueconverter. Pokud se k tomu vecer dostanu, tak na to napisu blog post, ted uz se padim bavit. Pekny den Jarda Jirava, Microsoft MVP - Client Application, MCAD, MCPD http://jirava.net/blog Příspěvek zaslán emailem Re: [WPF][C#] Binding
Vloženo uživatelem: JardaJirava (Jarda Jirava) - uživatel již zaslal 215 příspěvků (IP uloženo)
Datum: 26. 05. 2009 08:32
Ahoj, tak jak jsem slibil, tak se mi to i povedlo splnit, takze vysledek je zde http://jirava.net/blog/Archive/wpf-binding-bez-codebehind.aspx i s projektem ke stazeni. Pekny den Jarda Jirava, Microsoft MVP - Client Application, MCAD, MCPD http://jirava.net/blog Příspěvek zaslán emailem Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 26. 05. 2009 10:30
Děkujki za hezký článek, ale zase jsem tročku ztroskotal na chybě :
"System.Windows.Data Error: 43 : BindingExpression with XPath cannot bind to non-XML object.; XPath='/Players/Player' BindingExpression ath=; DataItem='XmlDataCollection' (HashCode=27766798); target element is 'ListView' (Name='Players'); target property is 'ItemsSource' (type 'IEnumerable') XmlDataCollection:'MS.Internal.Data.XmlDataCollection'"
Raději již uvedu svůj XAML kód : <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Hry_Klient.Window1" x:Name="Window" Title="Hry.Dimenze.net" Width="1000" Height="700" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:Hry_Klient="clr-namespace:Hry_Klient" mc:Ignorable="d" Background="#494E48" FontFamily="./Fonts/#Ignis et Glacies Sharp" FontSize="12" d:IsStaticText="True" > <Window.Resources> <Hry_Klient:ResourceKeyConverter x:Key="rsKey" /> <XmlDataProvider x:Key="ServersCS" Source="http://hry.dimenze.net/server_stats2.php?game=cs" d:IsDataSource="True"/> <XmlDataProvider x:Key="PlayersCS1" Source="http://hry.dimenze.net/API/players_stats_cs1.php" d:IsDataSource="True" /> <XmlDataProvider x:Key="PlayersCS2" Source="http://hry.dimenze.net/API/players_stats_cs2.php" d:IsDataSource="True" /> <XmlDataProvider x:Key="PlayersCS3" Source="http://hry.dimenze.net/API/players_stats_cs3.php" d:IsDataSource="True" /> <XmlDataProvider x:Key="PlayersCS4" Source="http://hry.dimenze.net/API/players_stats_cs4.php" d:IsDataSource="True" /> <XmlDataProvider x:Key="PlayersCS5" Source="http://hry.dimenze.net/API/players_stats_cs5.php" d:IsDataSource="True" /> <XmlDataProvider x:Key="PlayersCS6" Source="http://hry.dimenze.net/API/players_stats_cs6.php" d:IsDataSource="True" /> <XmlDataProvider x:Key="PlayersCS7" Source="http://hry.dimenze.net/API/players_stats_cs7.php" d:IsDataSource="True" /> </Window.Resources> <Grid Height="640" Width="950" Background="#494E48"> <TabControl Margin="0,0,8,68.976" IsSynchronizedWithCurrentItem="True" Background="#686A65"> <TabItem Header="Servery"> <Grid> <ListView x:Name="Servers" SelectionChanged="ListView_SelectionChanged" Margin="8,32.647,8,0" IsSynchronizedWithCurrentItem="True" Height="223.502" VerticalAlignment="Top" SelectedValuePath="Id" FontFamily="./Fonts/#Segoe UI"> <ListView.ItemsSource> <Binding Source="{StaticResource ServersCS}" XPath="/Servers/Server" /> </ListView.ItemsSource> <ListView.View> <GridView> <GridViewColumn Header="#" Width="20" DisplayMemberBinding="{Binding XPath=Id}" /> <GridViewColumn Header="Server" Width="400" DisplayMemberBinding="{Binding XPath=Name}" /> <GridViewColumn Header="Mapa" Width="250" DisplayMemberBinding="{Binding XPath=Map}" /> <GridViewColumn Header="Hráči" Width="65" DisplayMemberBinding="{Binding XPath=Players}" /> </GridView> </ListView.View> </ListView> <ListView x:Name="Players" HorizontalAlignment="Right" Margin="0,260.146,8.001,8" Width="394.012" FontFamily="./Fonts/#Segoe UI" ItemsSource="{Binding }"> <ListView.DataContext> <MultiBinding Converter="{StaticResource rsKey}"> <MultiBinding.Bindings> <Binding ElementName="Servers" Path="SelectedItem" /> <Binding RelativeSource="{RelativeSource AncestorType={x:Type Window}}" /> </MultiBinding.Bindings> </MultiBinding> </ListView.DataContext> <ListView.View> <GridView> <GridViewColumn Header="Hráč" Width="180" DisplayMemberBinding="{Binding XPath=Name}" /> <GridViewColumn Header="Body" Width="50" DisplayMemberBinding="{Binding XPath=Kills}" /> <GridViewColumn Header="Čas" Width="150" DisplayMemberBinding="{Binding XPath=Time}" /> </GridView> </ListView.View> </ListView> <Button HorizontalAlignment="Left" Margin="8,260.146,0,247" Name="button2" Width="114" Click="button2_Click">Obnovit</Button> </Grid> </TabItem> <TabItem Header="Komunita"> <Grid> <Label Margin="7.983,151.054,8.017,148.707" Content="V Přípravě" FontSize="72" HorizontalAlignment="Center"/> </Grid> </TabItem> <TabItem Header="Web"> <Grid> <Button Height="23.48" HorizontalAlignment="Left" Margin="8,8,0,0" x:Name="button1" VerticalAlignment="Top" Width="82" Click="button1_Click" Content="Přejít" d:LayoutOverrides="GridBox"/> <TextBox Height="23.48" x:Name="textBox1" Margin="94,8,8,0" VerticalAlignment="Top" AcceptsReturn="True" FontSize="12" Text="http://hry.dimenze.net/" d:LayoutOverrides="GridBox" /> <WebBrowser Margin="0,45,0,8" Source="http://hry.dimenze.net/" x:Name="webBrowser1" /> </Grid> </TabItem> </TabControl> </Grid> </Window> a v konvertoru jsem upravil jednu řádku na : var resource = fe.TryFindResource("PlayersCS"+val.Attributes["id"].Value) as XmlDataProvider; Nevíte kde dělám opět chybu ? Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 26. 05. 2009 10:32
... ou ten SelectionChanged="ListView_SelectionChanged" tam již nepatří ![]() Re: [WPF][C#] Binding
Vloženo uživatelem: JardaJirava (Jarda Jirava) - uživatel již zaslal 215 příspěvků (IP uloženo)
Datum: 26. 05. 2009 10:44
Ahoj, takhle rychle prohlednuto tam nic nevidim. Co me vsak zarazi, ze to co si vracis neni xml, resp. nema to hlavicku xml a v tom muze byt problem. Zkus tedy poladit nastaveni serveru, nebo alespon toho php scriptu. Pekny den Jarda Jirava, Microsoft MVP - Client Application, MCAD, MCPD http://jirava.net/blog Příspěvek zaslán emailem Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 26. 05. 2009 10:51
Hlavičku scripty posílají : Content-Type: application/rss+xml; charset=utf-8 Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 26. 05. 2009 10:57
Tak jsem dvou scriptům změnil hlavičku (palyers_stats_cs1 a cs2.php) na Content-Type: text/xml; tedka to chybu do Outputu nepíše, ale zato se v listviewu nic nezobrazí. Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 26. 05. 2009 11:04
Oprava tak už mi to funguje Stačilo změnit ItemsSource="{Binding }"> na ItemsSource="{Binding XPath=/Players/Player }.
ALe přesto bych měl další dotaz, jde udělat nějaký refresh těch zdrojů ? Re: [WPF][C#] Binding
Vloženo uživatelem: JardaJirava (Jarda Jirava) - uživatel již zaslal 215 příspěvků (IP uloženo)
Datum: 26. 05. 2009 11:08
Ahoj, To je tim, ze jsi tu cestu nespecifikoval u toho datoveho zdroje. Refresh je primo metoda daneho XmlDataProvideru. Pekny den Jarda Jirava, Microsoft MVP - Client Application, MCAD, MCPD http://jirava.net/blog Příspěvek zaslán emailem Re: [WPF][C#] Binding
Vloženo uživatelem: martin.developer - uživatel již zaslal 65 příspěvků (IP uloženo)
Datum: 26. 05. 2009 11:16
Super, mám ji. Děkuji moc za veškerou pomoc. Toto fórum je provozováno také jako emailová konference s e-mailovou adresou net [a] builder.cz. Toto je neredigovaná a nemoderovaná diskuse čtenářů serveru Builder.cz. Redakce ani provozovatel serveru za obsah jednotlivých příspěvků nenese zodpovědnost. |