Player
{
IsNew, Name, LastName, PlayerNumber
}
I have an ObservableCollection<Player> Players in my ViewModel. My grid is binded to this Players collection
I want to make my column that displays my playernumber enabled depending on my IsNew field
I created a multibinding convertor to pass the value IsNew with some other value on my ViewModel that i need.
I'm having problems passing the IsNew property value to my converter. Binding Path="IsNew" does not work. What do I have to do to pass the entire player object to the converter or just the one field from the player that i need?
<igDP:UnboundField Name="LastName" Label="Last Name" BindingPath="LastName" BindingMode="TwoWay" Width="115" > <igDP:Field.Settings> <igDP:FieldSettings EditorType="{x:Type igEditors:XamTextEditor}"> <igDP:FieldSettings.EditorStyle> <Style TargetType="{x:Type igEditors:XamTextEditor}"> <Setter Property="IsEnabled"> <Setter.Value> <MultiBinding Converter="{StaticResource RosterEdit}"> <Binding Path="IsNew" /> <Binding RelativeSource="{RelativeSource FindAncestor,AncestorType={x:Type core:GlassWindow}}" Path="DataContext.AllowEdit" /> </MultiBinding> </Setter.Value> </Setter> </Style> </igDP:FieldSettings.EditorStyle> </igDP:FieldSettings> </igDP:Field.Settings> </igDP:UnboundField>
Hello,
I have been looking into your question and in order to implement the needed functionality you can try using a converter within the multi binding:
<Grid>
<Grid.Resources>
<local:conv x:Key="aaa"/>
</Grid.Resources>
…
<TextBlock.Text>
<MultiBinding Converter="{StaticResource aaa}">
<Binding Path="porp1" />
<Binding Path="porp2"/>
</MultiBinding>
</TextBlock.Text>
Notice that the converter implements the IMultiValueConverter interface:
public class conv : IMultiValueConverter
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
return "custom value";
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
throw new NotImplementedException();
Please let me know if you need further assistance regarding the discussed matter.
Sincerely,
Ekaterina
Developer Support Engineer
Infragistics, Inc.
www.infragistics.com/support
Also after trying your code above it did not work. passing the name of my properties are not being recognized. I'm guessing it has to do with the fact that my player is binded to the combo box and the textboxt needs to be passed some form of relative ancestor like the issue i was having earlier. Would you know what it is that i must pass to have my variables work? This would probably also solve the stringformatting issue. It's probably currently not being able to define the properties inside of the parent control's selecteditem.
Thank you for your answer.
As you mentioned earlier what is being displayed is the ObjectType. That behavior is being observed when you are passing the control an object and you haven’t gave explicit path to a property that returns some sort of value to be displayed. Than the object’s ToString method is being automatically invoked and what you will get is the string representation of the object’s type.
So in order to have the binding working as expected you have to bind the xamComboEditor to a collection of objects. These objects must expose some sort of properties and you should explicitly point the path to one of them so it will be the DisplayedValue of your xamComboEditor. Binding the TextBlock’s Text value in your ControlTemplate, you can give a Path that points to other properties that are part of the data source objects.
If you have above mentioned implementations and your code is still not working, you can give me a sample project that demonstrates the issue, so I can continue investigating.
I will be looking forward to hearing from you.
If you look at my original post posted on 04-27-2012 5:40 PM which is the first thread on this that is exactly what i did. I have in my ViewModel a property called players. Please see my earlier comments for further explanation of my scenario, i included everything and also my segment of code. Any help appreciated.
I took a look through the whole conversation, but I am not able to determine the reason for this unexpected behavior. As you mentioned some posts ago, you are using the combo editor outside xamDataGrid, but now you are saying that I should refer to your first post which is about editors that take place in xamDataGrid.
Would you please provide me with a sample project in order for me to investigate further, because the sample code that I have provided is working when tested on my computer but when you implement it within your data source, it is not.
This code works NOT USING INFRAGISTICS:
Using the .Net controls i binded a player collection from my view model to a combo box and customized the display according to different properties within my the player object. How do i accomplish this same behavior with infragistics? I am not using a grid. I just have a combo box in a form
<ComboBox Grid.Column="1" Grid.Row="2" Name="cbFGPlayer" SelectedItem="{Binding FieldGoal.Player, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding PlayerCollection}"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat=" {0} - {1}, {2} ({3}) "> <Binding Path="PlayerNumber" /> <Binding Path="LastName" /> <Binding Path="FirstName" /> <Binding Path="Position" /> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
I tried this to accomplish the same behavior in infragistics and that did not work
<igEditors:XamComboEditor Grid.Column="1" Grid.Row="2" Name="cbFGPlayer" ItemsSource="{Binding PlayerCollection}" SelectedItem="{Binding FieldGoal.Player,NotifyOnSourceUpdated=True,UpdateSourceTrigger=PropertyChanged}"> <igEditors:XamComboEditor.Template> <ControlTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat=" {0} - {1}, {2} ({3}) "> <Binding Path="PlayerNumber"/> <Binding Path="LastName"/> <Binding Path="FirstName"/> <Binding Path="Position"/> </MultiBinding> </TextBlock.Text> </TextBlock> </ControlTemplate> </igEditors:XamComboEditor.Template> </igEditors:XamComboEditor>
<MultiBinding StringFormat=" {0} - {1}, {2} ({3}) ">
FYI ... this controls are NOT within a XAMDATAGRID. If you're getting confused by the Grid.Row and Grid.Column that is a grid to line up controls so they are not unorganized on the screen. You can take those two out and the code will still work if that is what's confusing you.
I am just checking the progress of this issue and was wondering if you managed to achieve your goal or if you need any further assistance on the matter.
I have modified the sample Ekaterina sent you, so now it has the functionality you want. Basically I use the XamComboEditor’s ValueToDisplayTextConverter to convert the Value to format you want. When the editor is not in edit mode and this way I didn’t set its Template property, which doesn’t make it to lose its default look.
Hope this helps you.
This worked, it was what i was looking for but when the dropdown is initially loaded you cannot tell it is a drop down until you click on it and then the border draws out and the down arrow showing there are choices to select. Is there a way to force the combobox to always show not only the border but the down arrow so user knows there is a dropdown?
Yay thank you this is exactly what i wanted and needed. Question regarding this though....when the dropdown is first populated you can't see that there is a drop down until you hit on it and then the drop down appears. Is there a way to force show border on it so that it's explicit to the user that they can edit that field?