I have a dev express grid control in my user control and want to bind my textbox.text to the selected row of grid control.
I used a textbox.text = {binding elementname=gridcontrolname path=selecteditem.name but it didn't work.i'm not using MVVM and my grid control is bind to an observable collection
In your xaml code you put this:
<TextBox Text="{Binding ElementName=gridcontrolename, Path=SelectedItem.name}"/>
Pay attention to upper and lower case. SelectedItem.Name is not the same thing as selecteditem.name
Related
I am looking for a textbox control that suggests words as the user types, similar to SuggestAppend for textboxes in winforms, except for WPF. I have looked around on the WPFToolkit and haven't really found anything that fits my needs.
Thanks.
Declare an enum AutoCompleteMode too with value(Append, None,SuggestAppend,Suggest)
public enum AutoCompleteMode
Create an custom UserControl with TextBox and ItemControls. Handle the KeyDown event of TextBox. Popup an custom List to show the suggestion list(ItemControls in here). Then Handle the selection of the ItemControls. Can custom the style of hte ItemControls's ItemTemplate. Apply the AutoCOmpleteMode in this UserControl and handle the Enum changed in the code behind.
WpfToolkit contains AutoCompleteBox that you can use for auto suggest feature.
You will have to define a collection for items to suggest (SuggestionItems) and set it as ItemsSource on AutoCompleteBox control.
<someNamespaceAlias:AutoCompleteBox
ItemsSource="{Binding SuggestionItems}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
about to add the following features
If select this combobox, I want to change the itemssource of the datagrid.
Are there any examples related to this?
You can do the following:
Create a WPF project.
Create a view (xaml) with the combobox and datagrid inside it.
Create a view model for this newly created view and declare public properties (collection/list) for the ItemsSource of the combobox and the grid. Also have a property for the selected item of the combobox.
Set this view model as the data context of your view.
In the setter of the combobox's selected item - change the property which is bound to the datagrid's ItemsSource to the collection that you by calling a method or however you wish.
I did this:
Add the namespace for caliburn in xaml
xmlns:cal="http://www.caliburnproject.org"
Here is the combobox:
<ComboBox ItemsSource="{Binding ComboBoxItemSource}" SelectedItem="{Binding SelectedItem}" cal:Message.Attach="[Event SelectionChanged] = [ComboBoxSelectionChanged()]" />
and the viewmodel should be having this method:
public void ComboBoxSelectionChanged()
{
// here based on the SelectedItem you can change the ItemSource for the dataGrid.
}
Whenever you are changing the selectedItem of Combobox the method will get hit and based on the logic that you need you can assign the ItemSource for the dataGrid.
Hope this helps :)
I've bound a ComboBox to my TextBox
<TextBlock Grid.Row="1" Name="DescriptionText" Text="{Binding ElementName=ScreenLocations, Path=SelectedItem.Description}" />
I have 4 ComboBoxes in my grid. What I want to do is, every time I select an item from any ComboBox, update the TextBox with the selected objects Description property.
Is it possible to bind multiple ComboBoxes to one TextBox, or would I need to use an event of some sort?
Create a property in your ViewModel and bind all your comboboxes' 'selectedItem' property to it (Use Mode="OneWayToSource", this will prevent changes on selectedItem of one ComboBox to affect the other), then bind your TextBox to the same property created in the VM with Mode="OneWay". Don't forget to implement INotifyPropertyChanged in your VM.
Do you knows how to make the WPF DataGrid VerticalScrollBar always visible, even if there is no data to display without putting DataGrid object instid a ScrollViewer?
You should be able to set the ScrollViewer.VerticalScrollBarVisibility attached property like so:
<DataGrid ScrollViewer.VerticalScrollBarVisibility="Visible" ...
I'm still new to WPF, and I'm trying to do something that's beyond my knowledge at the moment.
I have a listbox databinded to the source collection, and a label. I'd like to bind the label's Content value to the listbox's item over which is mouse hovered.
Say I have DataTemplate binded to the class MenuItem:
<DataTemplate DataType="{x:Type local:MenuItem}" x:Key="MenuListTemplate">
Which has member Text. I want my Label to display Text from element which is mouse overed in list. I have the IsMouseOver trigger for my textbox, but have no idea how to bind Label.Content to it.
Any tips?
I don't think that binding can achieve your goal with ease. I think it's easier to do with routed events.
Subscribe to the MouseMove event at the ListBox level. Check if the source of the event is a ListBoxItem, and if it is use this item to update the label.