webForumDet fria alternativet

Vista sabbar min kod.

.NET

10 svar · 708 visningar · startad av Gladh

Medlem sedan maj 20012 812 inlägg
Frågan#1

Sitter på en Vista maskin och har fått problem med min kod som fungerar på en XP maskin.

Har sökt på nätet men inte hittat någon som råkat ut för samma problem och undrar om det finns någon som sitter med följande conf.

VISTA, VS 2008 SP1, .NET 3.5 SP1 och skulle vilja testa följande kod från Beatriz Costa (http://www.beacosta.com/Forum/ListViewVisualTree.zip)

I denna kod finns en kodsnutt som fungerar i XP men som nu inte fungerar i Vista.

            Places places = (Places)(this.Resources["places"]);   
            Place redmond = places[1];   
            ListViewItem lvi = (ListViewItem)(lv.ItemContainerGenerator.ContainerFromItem(redmond));   
            Border bd = (Border)(VisualTreeHelper.GetChild(lvi, 0));   
            GridViewRowPresenter rp = (GridViewRowPresenter)(VisualTreeHelper.GetChild(bd, 0));   
            ContentPresenter cell1 = (ContentPresenter)(VisualTreeHelper.GetChild(rp, 0));   
            cell1.ContentTemplate = (DataTemplate)(this.Resources["nameTemplate2"]);

Det är raden:

GridViewRowPresenter rp = (GridViewRowPresenter)(VisualTreeHelper.GetChild(bd, 0));

Som ger mig problem genom att den vill ge tillbaka ett border objekt i vista men ett GridViewRowPresenter objekt i XP.

Någon som kan verifiera om min installation är kass eller om ni upplever samma problem...

- M

Medlem sedan juni 20031 837 inlägg
#2

har du samma version av VS och .Net på XP och Vista?

Medlem sedan maj 20012 812 inlägg
#3

japp....

- M

Medlem sedan juli 20011 304 inlägg
#4

Har ingen lösning men jag kan meddela att jag får exakt samma fel om jag kör lösningen.

"Det är inte dig det är fel på... det är... microsoft...?"

Medlem sedan maj 20012 812 inlägg
#5

Det är ju skönt att fler än jag får det felet... Jag har nämligt testat att ominstallera vista maskinen men det hjälpte inte, så nu har jag slängt tillbaka XP så får MS ta och skärpa sig....

- M

Medlem sedan maj 20012 812 inlägg
#6

Jag fick just ett svar från på MSDN (typiskt har väntat i flera dagar och så precis när man installerat om maskinen så får man ett svar som kanske fungerar).

Personen föreslog att det hade med themat att göra, att Luna på XP och Aero på Vista kanske inte hanterade informationen likadant.

Jon skulle du vilja testa koden igen om du ändrar themat till typ klassisk eller något som inte är så fancy och se om koden fungerar... orkar inte installera om maskinen nu....

MVH
Magnus

Medlem sedan maj 20012 812 inlägg
#7

fick följande svar på MSDN där de bekräftar att ListViewItem har olika strukturer för XP och för Vista :q

Fick även exempelkod som fungerar i XP som säkert fungerar i vista med

MSDN Forum skrev:

Okay, I can verify that, the control template for ListViewItem under Windows XP and Windows Vista has different structure.

I think you could access the GridViewRowPresenter using the following extension method:

public static T GetVisualChild<T>(this Visual referenceVisual) where T : Visual
{
Visual child = null;
for (Int32 i = 0; i < VisualTreeHelper.GetChildrenCount(referenceVisual); i++)
{
child = VisualTreeHelper.GetChild(referenceVisual, i) as Visual;
if (child != null && (child.GetType() == typeof(T)))
{
break;
}
else if (child != null)
{
child = GetVisualChild<T>(child);
if (child != null && (child.GetType() == typeof(T)))
{
break;
}
}
}
return child as T;
}

Then you could access the GridViewRowPresenter using the following code:
GridViewRowPresenter gridViewRowPresenter = listViewItem.GetVisualChild<GridViewRowPresenter>();

Hope this helps

Nu har jag inte vista kvar längre :( så jag hoppas att det fungerar när jag kommer så långt att applikationen måste fungerar på vista också...

- M

Medlem sedan juli 20011 304 inlägg
#8

Släng upp den så kan jag testa åt dig :)

Medlem sedan aug. 20003 575 inlägg
#9

Det är skitjobbigt när det inte fungerar konsekvent över operativsystemen.

Oftast finns det den gyllene vägen att gå där det fungerar för alla, är det något jag lärt mig av WPF så är det att det finns flera vägar att gå.

Medlem sedan jan. 20022 440 inlägg
#10

Ja precis som jag läste i min kära WPF-bok precis så är det att om möjligheterna till en lösning är många i Windows Forms så är de oändliga i WPF :)

Medlem sedan aug. 20003 575 inlägg
#11

CatZ skrev:

Ja precis som jag läste i min kära WPF-bok precis så är det att om möjligheterna till en lösning är många i Windows Forms så är de oändliga i WPF :)

Mmm, på både gott och ont, det är svårt att veta när man har en bra lösning.

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)