|
Hi Guys,
I am a bit new to wpf and was wondering if you guys could point me in the right direction. I am creating a database program. What I want to do is create a window with a datagrid to display my data and create another window where I can plot the data and create graphs. I want to go with two windows or more because most people here at work use dual monitor setups and it would be helpful not to have something like Visual studio's dockable layout. Eventually I will also want to select samples in the mainwindow datagrid and have the highlighted in the graphs and think that I would need to use the same dataset/table to accomplish that, is that correct?
My question is this, how do I access the dataset/table in the mainwindow from window2? The dataset/table is filled from excel/sqlCE.
All I could find so far was to create an inheritance but I couldn't find any mention of moving entire dataset/tables between windows, and I think filling a new dataset with the same data may eat up lots of resouces down the road.
Any help would be appreciated. Perhaps someone has come accross a similar problem in the past and has some insights.
Many thanks in advance.
|
|
|
|
|
Presumably you are binding your grid to a collection which resides in a ViewModel (if it is in the code behind then research MVVM). I would bind both windows to the same ViewModel as you want the selection event in one to affect the 2nd window (View).
A purist would probably set up a messaging system between 2 distinct ViewModels.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Ok, thank you very much for your input. I think I am starting to understand what you are saying. I did some research this morning on MVVM and if I understand correctly, I have to do the following (Please correct me if I am wrong)
1 Create 2 windows
2 Create 1 ViewModel
3 In the ViewModel create a command that reads data and creates a sql database and fills a dataset
4 In one window create a Datagrid and bind it to the dataset created in step 3
5 In that window create a button and bind it to that command to start the data filling process
6 In second window do all the charting etc based on the dataset created in the Viewmodel
Is that in essence what needs to be done? I'll have to do some reading on MVVM and such either way but it would be a starting point as I got the major components mostly working already.
thanks
|
|
|
|
|
Hello,
I defined the next data grid:
<toolkit:DataGrid
ItemsSource="{Binding LogList}">
</toolkit:DataGrid>
And when in my view model file i update the LogList the data in the data grid is also uopdated everything is fine.
But there is one problem the automaticly generated columns are not in the order that i would like them to be.
How can i fix it?
Thanks
|
|
|
|
|
columbos14927 wrote: the automaticly generated columns are not in the order that i would like them to be
The turn off the auto generation and create the columns as you want them.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
How to create multi-category charts in silverlight.
I have 3 columns in my data Financial year , Quarter, amount paid.
based on one single id i fetch the records and then plot data for these 3 columns.
I want financial year and quarter on category axis.
|
|
|
|
|
Use charting in the Silverlight toolkit[^].
|
|
|
|
|
I have created a chart that displays multiple series using silverlight toolkit only, but i want a multi-category chart in silverlight.
|
|
|
|
|
If you want to switch between different charts you can always do so.
Otherwise, you can try and template / customize the chart that is closest to your requirement.
|
|
|
|
|
I want this for column series is it possible..
Can u please help me in doing this
modified 13-Jun-13 4:35am.
|
|
|
|
|
|
|
Hello members,
I have tables (DBTable) in SQL 2008 that contains two columns that look like this:
Col1 Col2
0 1
0 1
1 1
1 1
0 1
I created a Silverlight application (BI -RIA and domain services) that populates the datagrid as follows
MyCarsDomainContext context = new MyCarsDomainContext();
dataGrid1.ItemsSource = context.DBTables;
context.Load(context.GetDBTablesCompareQuery());
I would like to change the row background color (just the text color will work fine too) based on the value of Col1. If 0 then row is red, if 1 then row is blue
Any help is greatly appreciated
|
|
|
|
|
Use DataGridTemplateColumn and use Textblock/Textbox controls. Use converter to set forecolor of textbox as per the binded value to Text property
-Abhijeet B
|
|
|
|
|
You can do this via the converter approach.
Call the converter during binding and set data fore color to the respective color in the converter.
A simple example here[^].
|
|
|
|
|
audio samples to wmv file using mediastreamsource
|
|
|
|
|
If you copy and paste those exact words into Google you will probably get some useful information.
Use the best guess
|
|
|
|
|
i want to get both samples audio and video using mediastreamsource .
|
|
|
|
|
Hi,
I have a silver light application. When I run it then its URL is like http://localhost/Myfirstapplication.aspx.
I have created another silver light application. Mostly code is copied from first application. But when I run it then its URL is like http://localhost/mysecondapplication.aspx#loginpage.xaml.
Actually I donot want to show .xaml path/name. Can any body tell me what setting should I made to hide .XAML or am I missing somthing ???
|
|
|
|
|
How can I run a store procedure (SQL 2008) from domain services?
default method is to simple
public IQueryable<cars> GetCars()
{
return this.ObjectContext.Cars;
}
It does not have to be a SP, I just thought it may be cleaner, basically what I need to run is something like this:
Select col1 from DBTables where ltrim(rtrim(col1)) not in (select ltrim(rtrim(col2)) from DBTables where col2 is not null)
order by 1
Select col2 from DBTables where ltrim(rtrim(col2)) not in (select ltrim(rtrim(col1)) from DBTables where col1 is not null)
order by 1
any help is greatly appreciated
|
|
|
|
|
|
I'm relatively new to WPF but I've gotten a decent handle on how data binding works except with combo boxes. I have a window in my application that when it loads it shows a list box with all the currently entered users' information. When a item is selected all the information is loaded into text boxes/combo boxes for editing. I got the data binding to work with the text boxes, but I can't get the combo box to bind to the gender property.
I have a class that represents a person. This is a stripped down version with just some of the properties, including the gender property that the combo box needs to bind to:
Public Class Person
Implements IPerson, INotifyPropertyChanged
#Region "Events"
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
#End Region
#Region "Variables"
Private _guid As Guid
Private _firstName As String
Private _lastName As String
Private _MiddleName As String
Private _sex As String
Private _created As DateTime
Private _modified As DateTime
#End Region
#Region "Properties"
Public ReadOnly Property GUID As Guid Implements IPerson.GUID
Get
Return _guid
End Get
End Property
Public ReadOnly Property Created As Date Implements IPerson.Created
Get
Return _created
End Get
End Property
Public ReadOnly Property Modified As Date Implements IPerson.Modified
Get
Return _modified
End Get
End Property
Public Property FirstName As String Implements IPerson.FirstName
Get
Return _firstName
End Get
Set(value As String)
_firstName = value
OnPropertyChanged(New PropertyChangedEventArgs("FirstName"))
End Set
End Property
Public Property LastName As String Implements IPerson.LastName
Get
Return _lastName
End Get
Set(value As String)
_lastName = value
OnPropertyChanged(New PropertyChangedEventArgs("LastName"))
End Set
End Property
Public Property MiddleName As String Implements IPerson.MiddleName
Get
Return _MiddleName
End Get
Set(value As String)
_MiddleName = value
OnPropertyChanged(New PropertyChangedEventArgs("MiddleName"))
End Set
End Property
Public Property Sex As String Implements IPerson.Sex
Get
Return _sex
End Get
Set(value As String)
_sex = value
OnPropertyChanged(New PropertyChangedEventArgs("Sex"))
End Set
End Property
#End Region
#Region "Methods"
Public Sub New(guid As Guid, Optional created As DateTime = Nothing, Optional modified As DateTime = Nothing)
Me._guid = guid
Me._created = created
Me._modified = modified
End Sub
Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)
If Not PropertyChangedEvent Is Nothing Then
RaiseEvent PropertyChanged(Me, e)
End If
End Sub
#End Region
When the window is loaded it calls the following method to pull the information from a MySQL database:
Public Shared Function GetAllEmployees() As ObservableCollection(Of Employee)
Dim connection As New MySqlConnection(connectionString)
Dim command As New MySqlCommand
command.Connection = connection
command.CommandText = StoredProcedures.GetProcedureName(StoredProceduresEnum.GET_ALL_EMPLOYEES)
command.CommandType = CommandType.StoredProcedure
Dim ds As New DataSet
Dim adapter As New MySqlDataAdapter
adapter.SelectCommand = command
adapter.Fill(ds)
Dim employees As New ObservableCollection(Of Employee)
Dim employee As Employee
For Each row As DataRow In ds.Tables(0).Rows
employee = New Employee(New Guid)
With employee
.FirstName = row.Item("FirstName").ToString
.MiddleName = row.Item("MiddleName").ToString
.LastName = row.Item("LastName").ToString
.Sex = row.Item("Sex").ToString
.IDNumber = row.Item("IDNumber").ToString
employees.Add(employee)
End With
Next
Return employees
End Function
*Note that employee inherits from the Person class
When the information is done loading from the database I display it in the list box by using lstEmployees.ItemsSource = employees
My XAML (stripped down) is this:
<ListBox Name="lstEmployees" Grid.Column="0" Grid.RowSpan="2" MinWidth="150" Margin="5,5,5,5" VirtualizingPanel.IsVirtualizing="True" >
<ListBox.ItemTemplate>
<DataTemplate>
<Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="4">
<Grid Margin="3">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock FontWeight="Bold">
<TextBlock.Text>
<MultiBinding StringFormat=" {0}, {1} ">
<Binding Path="LastName" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock Grid.Row="1">
<TextBlock.Text>
<MultiBinding StringFormat="ID: {0}">
<Binding Path="IDNumber" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid x:Name="entryFieldsGrid" Grid.Column="2" Margin="5,5,5,5" Width="Auto" DataContext="{Binding ElementName=lstEmployees, Path=SelectedItem}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0" >
<TextBlock Text="First Name:" Padding="0,0,5,0" />
<TextBox x:Name="firstName" Width="150" Text="{Binding Path=FirstName}"/>
<TextBlock Text="Middle Name:" Padding="5,0,5,0"/>
<TextBox x:Name="middleName" Width="150" Text="{Binding Path=MiddleName}"/>
<TextBlock Text="Last Name:" Padding="5,0,5,0"/>
<TextBox x:Name="lastName" Width="150" Text="{Binding Path=LastName}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="1">
<TextBlock Text="Sex:" Padding="0,0,5,0" />
<ComboBox x:Name="cboSex" IsEditable="False" SelectedValue="{Binding Path=Sex}" DisplayMemberPath="Sex" SelectedValuePath="Sex">
</ComboBox>
</StackPanel>
</Grid>
As of now, when I select different employees in the list box, the three name boxes show the appropriate data, however the combo box doesn't show anything. I also had tried adding:
<ComboBoxItem></ComboBoxItem>
<ComboBoxItem>M</ComboBoxItem>
<ComboBoxItem>F</ComboBoxItem>
to the combo box in the hopes that it would select the correct item based on the currently selected employee and that the user would have the ability to change it to one of the supplied values to persists back to the database. However no matter how I change the binding properties, I can not get the combo box to show anything. Whether I have the combo box item elements in the XAML or not, the combo box never shows anything.
What am I doing wrong? Why won't the combo box select the correct gender based upon the currently selected item in the list box?
|
|
|
|
|
DisIsHoody wrote: <ComboBox x:Name="cboSex" IsEditable="False" SelectedValue="{Binding Path=Sex}" DisplayMemberPath="Sex" SelectedValuePath="Sex">
Remove all DisplayMemberPath & SelectedvaluePath. Binding For SelectedValue should be in TwoWay mode.
|
|
|
|
|
Your combo needs an ItemsSource (observable collection of m/f/o) if you use an object then you need the display and value paths otherwise Amitosh is also correct, SelectedValue needs Mode="TwoWay" to store it back to your SelectedItem.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I've a Silverlight application that manages the movement of electronic documents through a series of approval steps. When an approval step is complete I want the application to email the next user in the approval chain that work needs to be accomplished. I cannot depend upon all users logging into the application every day so the email reminders will help those who don't do much in the system.
I can send email from the application with no problems, but again, this is dependent upon the application being opened.
So I'm thinking it is probably best to put a Windows Service or something out on the server that automatically checks the state of the application every 5 minutes or so and handles the email. The point is, I'm open to suggestions.
I think this is something that needs to run off on it's own, separate from the Silverlight UI.
Thoughts, ideas, suggestions?
|
|
|
|