Code Monkey home page Code Monkey logo

timswpfcontrols's Introduction

TimsWpfControls

Some missing WPF Controls that integrates with MahApps.Metro

ATTENTION This libary may not be production ready

MahApps-Integration

Whenever a control is implemented in MahApps it will be removed here. Please Stay tuned if you use this library.

Disclaimer

This libary is provided without any warrenty. It will change to whatever I need, so there might be some breaking changes when you update.

BaseClass

The BaseClass implements INotifyPropertyChanged, INotifyPropertyChanging, INotifyDataErrorInfo and can be used to autmatically set and validate any property. This class will be deleted once the WindowsCommunityToolkit-MVVM package is available and provides the same functionallity.

Converters

EnumToBool Converter

This converter can be used to bind an enum to a group of RadioButtons

Consider the following enum in your Model:

public enum Gender
{
    Female,
    Male, 
    Diverse
}

In your XAML define these namespaces:

xmlns:timsConverter="clr-namespace:TimsWpfControls.Converter;assembly=TimsWpfControls"
xmlns:model="MyApp.MyModel"

And here is your group of RadioButtons

<StackPanel>
    <RadioButton Content="Female"
                    GroupName="RadioButtonsGender"
                    IsChecked="{Binding Gender, Converter={timsConverter:EnumToBoolConverter}, ConverterParameter={x:Static model:Gender.Female}}" />
    <RadioButton Content="Male"
                    GroupName="RadioButtonsGender"
                    IsChecked="{Binding Gender, Converter={timsConverter:EnumToBoolConverter}, ConverterParameter={x:Static model:Gender.Male}}" />
    <RadioButton Content="Diverse"
                    GroupName="RadioButtonsGender"
                    IsChecked="{Binding Gender, Converter={timsConverter:EnumToBoolConverter}, ConverterParameter={x:Static model:Gender.Diverse}}" />
</StackPanel>

timswpfcontrols's People

Contributors

dependabot[bot] avatar lwqwag avatar timunie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

timswpfcontrols's Issues

MultiSelectionComboBox - How to get SelectedItems

Hello
This is rather a question not an issue.
I use your MultiSelectionComboBox since it isn't avaible yet in Mahapps.
Like this:

` <controls:MultiSelectionComboBox x:Name="multiSelectComboBox" MinWidth="150"

                                  VerticalAlignment="Center"
                                  Margin="5"
                                  IsEditable="False"
                                  IsReadOnly="False"
                                  mah:TextBoxHelper.ClearTextButton="True"
                                  mah:TextBoxHelper.Watermark="Proszę wybrać walidację"
                                  ItemTemplate="{DynamicResource Tims.DataTemplates.MultiSelectionComboBox.CheckBox2}"
                                  SelectedItemsTemplate="{DynamicResource Tims.DataTemplates.MultiSelectionComboBox.Removeable2}"
                                  SelectionMode="Multiple"
                                  Separator=", "
                                  ItemsSource="{Binding CheckModels}">`

I have changed the Tims.DataTemplates.MultiSelectionComboBox.CheckBox
Only here
Content="{Binding Content}"

And I have changed the Tims.DataTemplates.MultiSelectionComboBox.Removeable
Only here
Content="{Binding Content}"

My model from ItemSource looks like this:

` public class CheckModel : BusinessBase
{

    private string _content;
    private bool _isChecked;
    private Func<Progress<ProgressReportModel>, Task> _checkTask;
    private Progress<ProgressReportModel> _progressReportModel;

    public Progress<ProgressReportModel> ProgressReportModel
    {
        get { return _progressReportModel; }
        set { SetProperty(ref _progressReportModel, value); }
    }
    public string Content
    {
        get { return _content; }
        set { SetProperty(ref _content, value); }
    }

    public override bool HasErrors => false;

    public bool IsChecked
    {
        get { return _isChecked; }
        set { 
            SetProperty(ref _isChecked, value); 
         
        }
    }

  
    public Func<Progress<ProgressReportModel>, Task> CheckTask
    {
        get { return _checkTask; }
        set { SetProperty(ref _checkTask, value); }
    }
}`

And my question is how can I bind IsChecked property from ComboBox to IsChecked property in my ViewModel.
Since one binding has to be like this:
IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBoxItem}, Path=IsSelected, Mode=TwoWay}"

StringFormat does not apply in MultiSelectionComboBox selection

Hi,

There is an issue with MultiSelectionComboBox: if I want to apply ItemStringFormat, it is only gets applied on items in dropdown, but not on items in combobox's total text field. Please, take a look at example screenshot

1

Steps to reproduce:

  1. Create ViewModel
public class ViewModel: INotifyPropertyChanged
{

        private ObservableCollection<DateTime> _dateTimes = new ObservableCollection<DateTime>() {DateTime.Now, new DateTime(2019, 4, 23)};
        public ObservableCollection<DateTime> DateTimes
        {
            get => _dateTimes;
            set
            {
                _dateTimes = value;
                OnPropertyChanged(nameof(DateTimes));
            }
        }
        
        [field: NonSerialized] public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
}
  1. Add MultiSelectionComboBox control to XAML and bind it to ViewModel
<timsWpfControls:MultiSelectionComboBox SelectionMode="Multiple" ItemsSource="{Binding DateTimes}" ItemStringFormat="{}{0:D}"/>
  1. Select all items and see the result

Update the MultiSelectionComboBox

  • Allow Multiline Text
  • Allow Separator in selected items
  • Update Popup position if Size changes
  • Allow setting sorting of selected Items
    • The order how the user clicked
    • The order they are stored in Items source
  • Can we use DisplayMemberPath to get the string?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.