Search Results

Search found 5 results on 1 pages for 'nareshbhatia'.

Page 1/1 | 1 

  • Column Header for a WPF TreeView

    - by nareshbhatia
    I am using the WPF TreeView to display some hierarchical information. Each item in the TreeView consists of several attributes, so I am using a Grid within my HierarchicalDataTemplate to display these attributes: <HierarchicalDataTemplate x:Key="ArtistTemplate" ItemsSource="{Binding XPath=Title}" ItemTemplate="{StaticResource TitleTemplate}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition SharedSizeGroup="NameColumn" /> <ColumnDefinition SharedSizeGroup="GenreColumn" /> <ColumnDefinition SharedSizeGroup="BornColumn" /> <ColumnDefinition SharedSizeGroup="DiedColumn" /> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding XPath=@Name}" /> <TextBlock Grid.Column="1" Text="{Binding XPath=@Genre}" /> <TextBlock Grid.Column="2" Text="{Binding XPath=@Born}" /> <TextBlock Grid.Column="3" Text="{Binding XPath=@Died}" /> </Grid> </HierarchicalDataTemplate> This displays as a nice TreeView with 4 columns - so far so good! The only additional thing I need is a header above the TreeView that displays column names. The header column widths should be synchronized with TreeViewItems and also the header styles should be customizable. What's the easiest way to do this? P.S. I found two solutions that came close: 1) A TreeListView here, but this requires me to implement a custom interface (ITreeModel) to my model. Also the approach in this solution is to start with a ListView and to implement a RowExpander manually. In my case, the TreeView is sufficiently close to what I need, so I am hoping that putting a header on it should be very simple. 2) A TreeListView here. This one indeed starts with a TreeView, but I can't figure out how to customize the header. I suspect that I have to customize the GridViewHeaderRowPresenter in the generic.xaml, but this element does not seem to have its own ControlTemplate.

    Read the article

  • WPF-Prism CanExecute method not being called

    - by nareshbhatia
    I am coding a simple login UserControl with two TextBoxes (Username and Password) and a Login button. I want the Login button to be enabled only when the username and password fields are filled in. I am using Prism and MVVM. The LoginViewModel contains a property called LoginCommand that is bound to the Login button. I have a CanLoginExecute() method in my ViewModel but it fires only when the application comes up and then never again. So the Login button is never enabled. What am I missing? Here's my xaml: <TextBox x:Name="username" Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" /> <TextBox x:Name="password" Text="{Binding Path=Password, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" /> <Button Content="Login" cmnd:Click.Command="{Binding LoginCommand}" /> Here's my ViewModel class LoginViewModel : IDataErrorInfo, INotifyPropertyChanged { public LoginViewModel() { this.LoginCommand = new DelegateCommand<object>( this.LoginExecute, this.CanLoginExecute); } private Boolean CanLoginExecute(object dummyObject) { return (string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password)) ? false : true; } private void LoginExecute(object dummyObject) { if (CheckCredentials(Username, Password)) { .... } } #region IDataErrorInfo Members public string Error { get { throw new NotImplementedException(); } } public string this[string columnName] { get { string result = null; if (columnName == "Username") { if (string.IsNullOrEmpty(Username)) result = "Please enter a username"; } else if (columnName == "Password") { if (string.IsNullOrEmpty(Password)) result = "Please enter a password"; } return result; } } #endregion // IDataErrorInfo Members #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } #endregion // INotifyPropertyChanged Members #region Properties private String _username; public String Username { get { return _username; } set { if (value == _username) return; _username = value; this.OnPropertyChanged("Username"); } } private String _password; public String Password { get { return _password; } set { if (value == _password) return; _password = value; this.OnPropertyChanged("Password"); } } public ICommand LoginCommand { get; private set; } #endregion // Properties }

    Read the article

  • Styling columns based on DataGridTemplateColumn in a WPF DataGrid

    - by nareshbhatia
    I am using a WPF DataGrid where one of the columns has a requirement to show an "Edit" hyperlink if the row is editable - this is indicated by a boolean flag in the backing model for the row. I was able to achieve this using a DataGridTemplateColumn - no problems. However an additional requirement on the entire row is not to show any highlights when the row is selected (this is a blue background by default). I have been able to achieve this on other columns by defining the DataGridCell style with a transparent background, e.g. <DataGridTextColumn Header="Id" Binding="{Binding Path=Id}" HeaderStyle="{StaticResource DataGridColumnHeaderStyle}" CellStyle="{StaticResource DataGridCellStyle}" /> where DataGridCellStyle is defined as follows: <Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}"> <Setter Property="Background" Value="Transparent" /> ... </Style> However the column in question, a DataGridTemplateColumn, does not offer a "CellStyle" attribute which I can use for turning off selection highlights. So my question is how to set the cell style when using a DataGridTemplateColumn? Here's my implementation of the column which satisfies the first requirement (i.e. showing an "Edit" hyperlink if the row is editable): <DataGridTemplateColumn Header="Actions" HeaderStyle="{StaticResource CenterAlignedColumnHeaderStyle}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Visibility="{Binding Path=Editable, Converter={StaticResource convVisibility}}" Style="{StaticResource CenterAlignedElementStyle}"> <Hyperlink Command="..." CommandParameter="{Binding}"> <TextBlock Text="Edit" /> </Hyperlink> </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> Thanks.

    Read the article

  • How to format a money value from an ISOCurrencySymbol in C#

    - by nareshbhatia
    I have created a Money class to save money values in different currencies. The class uses 3 letter ISO symbols to store currency types: public class Money { public decimal Amount { get; set; } public string Currency { get; set; } } Is there a way in C# to use this information, say 100.00 USD, and format it as "$100.00"? Only way I know of requires CultureInfo like this: Amount.ToString("C", CultureInfo.CreateSpecificCulture("en-US")); However this does not work with my Money class. Is there another solution? I am open to changing my Money class. I have searched this site for similar questions (such as this), but couldn't find one that answers the above question.

    Read the article

  • How to display two ObservableCollections as a single list in WPF?

    - by nareshbhatia
    I have two ObservableCollections, say ObservableCollection<Cat> and ObservableCollections<Dog>. Cat and Dog both derive from class Pet. I want to display a list of all Pets. How do I do this? I prefer not want create a new ObservableCollection<Pet> by adding items from the two source lists because this list will become stale as more Cats and Dogs are added to the source lists. I can think of two approaches: 1) Create a "Decorator" ObservableCollection that keeps the two source collections as members and iterates over them every time. 2) Create an ObservableCollection<Pet> that does have the combined elements of the two source collections, but is also dependent on the source collections. Thus if a Cat is added to the Cat collection, this collection is notified and it adds the new Cat to itself. Is there a standard way to solve this issue? I don't want to reinvent the wheel!

    Read the article

1