|
About e-mail you have to go WCF and then in the server side use that service. Even if you could send an email to an SMTP server from silverlight you would have to set your credentials in your client code... this means... an spammer would be quite happy to dessasembly your code get the credentials and use them to rely on your SMTP and send tones of nonsense emails.
On the other hand, you create modal popups (I used them on my app), the result that you get is similar to the AJAX ASP .net modal popup.
Thanks
Braulio
/// -------------------------
Braulio Díez
DBSchemaEditor.com
Free Silverlight based DB Schema Modeling Tool
/// -------------------------
|
|
|
|
|
|
Ok, so I know how to bind to a collection (of course using an "observable collection" like any proper WPF gentry). However, supposed I want to bind a control to just one object that is not a collection.
Say for instance, I just want to bind the customer's information to a control so that they can see their name, address, phone numbers, and make any changes they desire. This does not require a collection of objects, just one Customer object. So, since it's one object, how do I ensure, for example, two-way binding so that whatever they change is updated? Or does it do this automatically for binding to one object?
Also, is it possible to bind to a property of an object? I have a user control (LittleControl) that is part of another user control (BigControl). If I bind BigControl to Customer, can I bind LittleControl to Customer.Benefits? How do I do this in the XAML?
Thanks in advance.
Blitz
|
|
|
|
|
It's easy to bind to a single item (and to ensure two way binding). All you need to do to the object is ensure that it uses INotifyPropertyChanged to raise notifications when properties change. If you look at this[^] blog entry, you can see how I bind to a simple class - it really is very straightforward.
BlitzPackage wrote: Also, is it possible to bind to a property of an object?
Yes. In your case, LittleControl "belongs" to BigControl, so LittleControl is able to walk all the way back up the logical tree looking for the data context, and use this to bind to the object. This means that it can use {Binding Path=Customer.Benefits} .
|
|
|
|
|
So, just to be sure - LittleControl can have its data context set to Customer.Benefits and thus, for example, bind one of it TextBoxes to Benefits.ProviderName - right?
Thanks again,
Blitz
|
|
|
|
|
How about I knock up a sample tonight, and post it on my blog for you to have a look at. Would that help at all?
|
|
|
|
|
Thanks Pete - I owe you one. That would help plenty.
|
|
|
|
|
|
OMG! That's awesome Pete! You have inspired me to start looking at putting up a blog. I would really love to share what I know with the world.
Thanks for the information. It's very, very helpful.
Blitz
|
|
|
|
|
You're welcome. Blogging is really good fun.
|
|
|
|
|
|
|
The second code snippet in the link in my response to the last question shows how to create rows and columns at runtime.
|
|
|
|
|
|
The grid rows and columns are created in the code-behind. From the referenced post:
'finds the actual grid used by the list box
Dim d As DependencyObject
d = VisualTreeHelper.GetParent( _
lstItems.ItemContainerGenerator.ContainerFromIndex(0))
While Not (d Is Nothing OrElse d.GetType() Is GetType(Grid))
d = VisualTreeHelper.GetParent(d)
End While
If d Is Nothing Then Exit Sub
'once you have the grid, you need to add the rows and columns
Dim rd As RowDefinition
Dim cd As ColumnDefinition
Dim grd As Grid = CType(d, Grid)
lstItems.SetValue(Grid.IsSharedSizeScopeProperty, True)
For i As Integer = 0 To 63
rd = New RowDefinition
rd.Height = New GridLength(1, GridUnitType.Star)
grd.RowDefinitions.Add(rd)
cd = New ColumnDefinition
cd.Width = New GridLength(1, GridUnitType.Star)
grd.ColumnDefinitions.Add(cd)
Next
'this is just for debugging purposes
grd.ShowGridLines = True
You have the right ItemsPanel and ItemContainerStyle, now you just need to bind to the ItemsSource property to get the items. Since you seem to have something you can bind to in XAML, just move the ItemsSource binding from the inner ItemsControl to the ListBox and get rid of the ItemsControl.
<!-- moved the data binding for AvailableObjects to here -->
<ListBox Name="lstItems" Background="Green" ItemsSource="{Binding Path=AvailableObjects}>
<ListBox.ItemsPanel>
<!-- what you have here is right -->
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<!-- what you have here is right -->
</ListBox.ItemContainerStyle>
<!-- this is wrong, you are adding an items control to the list box
as its only item, you need to do set ItemsSource instead -->
<ItemsControl FontWeight="Normal" ItemsSource="{Binding Path=AvailableObjects}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button
Grid.Row="{Binding Path=YLoc}"
Grid.Column="{Binding Path=XLoc}"
Content="{Binding Path=ObjectText}"
Margin="2,3.5"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ListBox>
|
|
|
|
|
|
|
|
Check the Immediate debugging window when the UserControl is loaded. Are there warnings about not being able to perform a binding because the property Strip cannot be found on object of some type or another? If so, that is referring to the ItemContainerStyle and you should bind to Content.Strip and Content.Panel instead.
As far as the grid, I did pull out two lines when I copied from the previous post because I thought they would not be necessary. Apparently I should have tested that assumption first. The lines I pulled out made each row and column part of a SharedSizeGroup since the grid does not always seem to size * columns the way it seems like it should.
for (int strip = 0; strip < _stripsPerPanel; strip++)
{
rd = new RowDefinition();
rd.Height = new GridLength(1, GridUnitType.Star);
rd.SharedSizeGroup = "RowGroup";
grd.RowDefinitions.Add(rd);
}
for (int part = 0; part < _partsPerStrip; part++)
{
cd = new ColumnDefinition();
cd.Width = new GridLength(1, GridUnitType.Star);
cd.SharedSizeGroup = "ColumnGroup";
grd.ColumnDefinitions.Add(cd);
}
|
|
|
|
|
|
|
In the thread above this one, the same situation came up. You will need to use the ItemContainerStyle instead of the ItemTemplate.
|
|
|
|
|
Hi,
I am working on an AddIn to the Microsoft Outlook Office. I have added an HTML Folder to Personal folders section in Outlook 2007. When I click on the folder, im redirecting to specified url. When I specify the internet application (both web and silverlight applications), its working fine. But If I specify an intranet silverlight application its not working. Its working for normal intranet web applications.
Please let me know why it is not working for intranet silverlight applications only?
here is the code..
Outlook.MAPIFolder newView = null;
newView = (Outlook.MAPIFolder)inBox.Folders.Add("TUIPoC", Outlook.OlDefaultFolders.olFolderInbox);
newView.WebViewURL = "http://....";
newView.WebViewOn = true;
TUIPoC is the folder name that i have created.
Please help me.
Thanks in Advance,
AR Reddy
|
|
|
|
|
AR Reddy wrote: If I specify an intranet silverlight application its not working.
How is the Silverlight app hosted? Is it accessible from a regular browser?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hai All
I need to use templates for changing the background color for each date in calendar control . Can any one tell me how to use templates for calendar control. Help me plz.
|
|
|
|