|
Thanks this is helpful.
My custom object is a type Result, which I get from a Win app.
I tried to debug but the value is null. Very wird. I will go through my code and see what is missing.
|
|
|
|
|
saku69 wrote: lbResults.ItemsSource = resultsList;
that statement tells what the list is bound to. So, if you are seeing something in the List means that something is bound to it. The only thing which can make the SelectedItem null now is nothing actually seledted
|
|
|
|
|
I have been searching for errors, but it does not seem to be any.
My custom objects show in my ListBox, but as soon I click on my objects I get NullReference Exception on my GetInfocard method. I have also tried with event SelectionChanged in Listbox, still without luck.
this is my code behind class
namespace ShowResultsControl
private void Infocard_Click(object sender, RoutedEventArgs e)
{
InfocardUserControl infocard = new InfocardUserControl();
Result selObject = ((sender as ListBox).SelectedItem) as Result;
infocard.GetInfocard(selObject);
}
and XAML for my Usercontrol(usercontrol1) where my listBox is
<UserControl x:Class="WpfShowResultsControl.GetResultUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:svc="clr-namespace:ShowResultsControl"
Height="300" Width="300" >
<Grid>
<StackPanel>
<StackPanel.Resources>
<DataTemplate x:Key="resultLayout" DataType="WPFResult">
<StackPanel Orientation="Vertical">
<TextBlock Foreground="Blue" FontFamily="Tahoma" >
<Hyperlink Click="Infocard_Click">
<TextBlock Text="{Binding Path=Header}" />
</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</StackPanel.Resources>
<ListBox x:Name="lbResults" ItemTemplate="{StaticResource resultLayout}">
</ListBox>
</StackPanel>
</Grid>
</UserControl>
Now this is the code for my 2nd usercontrol, it should become visible, when I select an item in Listbox of Usercontrol1
code behind class for my 2nd usercontrol
namespace ShowResultsControl
{
public partial class InfocardUserControl : UserControl
{
public InfocardUserControl()
{
InitializeComponent();
}
public void GetInfocard(Result result)
{
Header.Text = result.Header;
Name.Text = result.Name;
}
}
}
and xaml
<UserControl x:Class="WpfShowResultsControl.InfocardUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:svc="clr-namespace:ShowResultsControl"
Height="200" Width="200">
<Grid>
<StackPanel>
<TextBlock x:Name="Header" FontFamily="Tahoma" FontSize="8"></TextBlock>
<TextBlock x:Name="Name" FontFamily="Tahoma" FontSize="4"></TextBlock>
</StackPanel>
</Grid>
</UserControl>
Could any one please tell me what I am missing to get it work??
modified on Monday, February 16, 2009 2:34 AM
|
|
|
|
|
saku69 wrote: Result selObject = ((sender as ListBox).SelectedItem) as Result;
Your sender is the Hyperlink control and not the listbox. You are trying to cast a Hyperlink (which is the sender) as a ListBox and hence you are getting a Null object. You are passing the null object to GetInfocard method which is causing the exception.
to get the selected item you should be doing
Result selObject = lbResults.SelectedItem as Result
I would suggest you to put a breakpoint in Infocard_Click and step in to find out why something is null. I am sure that it is because of you wrong casting as I have mentioned above.
|
|
|
|
|
Hi,
I'm new to WPF and have been into MFC for years.
I'm wondering if it is possible to send/post a msg. from a WPF exe onto a MFC exe and back after a job is done? My MFC app. can process messages from windows from all processes in the system but can a WPF app. process the same? I think 'yes' but how ... any pointers would be appriciated.
The reason I wan't this is to have a smooth presentation gui made in WPF and base its details on data that originates from the MFC app. In that way both participants do the job they are best at.
Kind regards,
Michael Mogensen
|
|
|
|
|
Michael Mogensen wrote: My MFC app. can process messages from windows from all processes in the system but can a WPF app. process the same?
WindowInteropHelper Class[^]
Michael Mogensen wrote: both participants do the job they are best at.
MFC is best at what?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
Hi All,
I'm just writing some tests for a custom control library and I'm a bit stuck on how to actually raise the event. There is a ListBox in the control that I want to raise a SelectedItem event on and then check the arguments. I've been looking through the docs for xUnit and RhinoMocks but I'm still unsure how to do this.
Anyone have any links or ideas?
Cheers,
|
|
|
|
|
I would think of setting the SelectedItem/Index which should raise the event?
|
|
|
|
|
I've started investigating UIAutomationPeers as I'm going to implement automated tests on the UI of control.
Should be interesting!
|
|
|
|
|
Please have a look at my article related to UI Automation:
WPF_UI_Automation[^]
Calin
modified on Friday, February 13, 2009 12:06 PM
|
|
|
|
|
|
|
Is there three or more items in the combobox's ItemsSource?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
In my double-click function, How to i access my grid (Name="Level2" @ line 17) so that I can set it visibility to visible for the selected row?
If there are any possible way to implement the change of visibility on double-clicking the selected row in WPF is also very welcome...
<code>
<!--<StackPanel Margin="8">
<ListView Name="listView" ItemsSource="{Binding}" MouseDoubleClick="listView_MouseDoubleClick">
<ListView.ItemTemplate>
<DataTemplate >
<Grid Name="GridMain" >
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
Level 1 - TextBlock
<Grid Name="Level1" Grid.Row="0" Height="20" >
<TextBlock Text="{Binding col0}" Name="AA" />
</Grid>
Level 2 - Table
<Grid Name="Level2" Grid.Row="1" Visibility ="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition> </ColumnDefinition>
<ColumnDefinition> </ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding col1}" Grid.Column="0" Name="BB" />
<TextBlock Text="{Binding col2}" Grid.Column="1" Name="CC"/>
</Grid>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>-->
</code>
|
|
|
|
|
When you use DataBinding the SelectedItem will be the databound object and not the control. So, you won't have access to the control to set its Visibility.
Two ways I think you can go along are,
Drive the Visibility through DataBinding i.e. bind Visibility to a property. You might need a converter (IValueConverter) to return a valid Visibility value (Hidden, Visible or Collapsed).
Or
You can have custom code(overriding the GetVisualChild) traversing the VisualTree to find the child control and set its Visibility, which would be painful.
I would prefer the first way.
|
|
|
|
|
I've read couple of articles concerning Silverlight, and WPF WBA, still confused between Silverlight, WPF WBA and ASP.NET
1. What is that Silverlight can do that WPF WBA (Web Browser App) can't? Someone memtioned Silverlight is like Java plugin? That WBA does not require such plugin?
Is WBA the next generation ASP.NET? And Silverlight adds to it by way of plugin, that some services such as Isolated Storage, is not available to WBA?
2. Can I write xaml for a WPF desktop app, then use the same xaml for WBA? Xaml for Silverlight different?
These are what I been reading, still consfused and don't have forever - anyone has some real answers to these questions? Thanks!
http://silverlight.net/Learn/[^]
http://windowsclient.net/learn/videos_wpf.aspx[^]
http://blogs.msdn.com/jennifer/archive/2008/05/06/when-should-i-use-wpf-vs-silverlight.aspx[^]
dev
modified on Thursday, February 12, 2009 2:46 AM
|
|
|
|
|
By "WBA", do you mean "XBAP"?
XBAP and Silverlight [^]
Silverlight apps run in the Silverlight browser plugin.
WPF apps are native Windows apps and are tied to Windows (and Internet Explorer for XBAPs).
Silverlight's XAML is a stripped down version of WPF's XAML. For example,
certain data binding methods are not available in Silverlight.
Several times I've accidentally wrote XAML in a WPF app to post in response to a Silverlight
newsgroup question, and the code still worked
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
THanks
By WBA I meant WPF "Web Browser Application" - I tried and run the app it's contained within a brower (Firefox on my XP) - so I think it's a browser based app BUT not served by IIS or webserver and therefore only available through file share? (This also explains why WBA is not a replacement for ASP.NET)
file:///I:/dev/NET3.0/WpfBrowserApplication1/bin/Debug/WpfBrowserApplication1.xbap
Now Silverlight when i tried run Silverlight app, I get this from browser:
http://localhost:1716/Default.aspx[^]
Meaning Silverlight is available via webserver/browser and not restricted to deliver by file share as in case of WBA. It does require Silverlight plugin however and the entire app gets executed on clientside once served, this significantly reduces postbacks.
On contrary, ASP.NET require plug-in and Silverlight/ASPNET are alternatives, competiting technologies. But, Silverlight again does not replace ASP.NET.
My understanding right?
dev
|
|
|
|
|
devvvy wrote: On contrary, ASP.NET require plug-in and Silverlight/ASPNET are alternatives, competiting technologies. But, Silverlight again does not replace ASP.NET.
I don't know a thing about asp.net beyond what I need to host my Silverlight applications.
My understanding is asp.net code runs server-side.
Silverlight apps run on the client within the Silverlight browser plugin.
I wouldn't call them competing technologies - I'd call them different technologies.
The Silverlight plugin can be used within asp.net pages (or any other web pages) much
the same as flash player is used.
Me personally, not knowing anything about HTML/ASP.NET programming, I just use a simple page
to host my Silverlight apps in the full browser window.
devvvy wrote: By WBA I meant WPF "Web Browser Application"
Those are commonly called WPF XBAPs (XAML Browser Applications) which will help you find much more info on them
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thanks
XBAP's - they can be served by IIS? I just ran it it pops under my browser Firefox but it's a local disk file. Are they best served and made available via file share/shared drive on intranet? Since XBAP requires .NET 3.5 installed on clientside then... why not just go silverlight even for intranet scenario? Is XBAP irrelevant because we have Silverlight?
I can see we need client side WPF but not XBAP
dev
|
|
|
|
|
You can publish XBAPs to an IIS server or any other web server.
ClickOnce deployment is used to download and install the XBAP behind the scenes.
Windows Presentation Foundation XAML Browser Applications Overview[^]
Deploying a WPF Application (WPF)[^]
Silverlight uses its own stripped down .NET framework, which has implementations
for other platforms (Mac and Unix-via-mono so far).
I think WPF XBAPs are more appropriate for corporate/enterprisey networks.
The requirement for .NET 3.x+ framework makes them useless for cross platform
situations. However, if you know all your clients will have .net 3.5 and be running on Windows,
then an XBAP can make more sense since it has access to the full .NET framework, and WPF
has a much richer XAML implementation than Silverlight does.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
From what I see - Silverlight can do even sockets it can allow very interactive experience. Even stock/derivative trading apps where client need to subscribe to constants/intensive price/pnl/others updates can be done with Silverlight, without requirement on .NET framework 3.x+.
I don't see any ... application for XBAP really...
dev
|
|
|
|
|
devvvy wrote: I don't see any ... application for XBAP really...
Me neither.
I've never done one, but I can see where with a corporate app on a corporate network
it keeps all the deployment/update issues on the server end which is much easier than
dealing with even ClickOnce manually.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
cheers, thanks for patience.
I'm getting my hands dirty with Silverlight for the first time today.
dev
|
|
|
|