В своем xaml-файле вы привязываете SelectedItem к SelectColorList, который является коллекцией, чтобы исправить это, вы должны привязать одно значение (некоторое строковое свойство в вашем случае), а не коллекцию.
ОБНОВЛЕНИЕ:
& emsp; Прежде всего, я хочу упомянуть, что нет способа для множественного связывания, поэтому мы будем использовать событие SelectionChanged.
& emsp; Например, это ваш вид, который содержит два списка, один из которых будет содержать источник цветов, который будет иметь возможность выбора нескольких элементов:
<Window x:Class="WpfApp1.MainWindow">
<StackPanel Orientation="Horizontal">
<!-- First list box contains colors -->
<ListBox
ItemsSource="{Binding ColorList}"
SelectionMode="Extended"
SelectionChanged="ListBox_SelectionChanged"
/>
<!-- Second list box will contain result values -->
<ListBox
ItemsSource="{Binding ItemList}"
/>
</StackPanel>
</Window>
[116 ]
& emsp; Ваш MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Set data context
DataContext = new ViewModel();
}
/// <summary>
/// Called when selection is changed
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
// Get event sender
var listBox = sender as ListBox;
// Create temp list for selected items
var tempList = new List<string>();
foreach (string item in listBox.SelectedItems)
{
tempList.Add(item);
}
(DataContext as ViewModel).OnSelectionChanged(tempList);
}
}
& emsp; И, наконец, модель вашего представления:
public class ViewModel : INotifyPropertyChanged
{
#region Private Fields
private ObservableCollection<string> mColorList;
private ObservableCollection<string> mItemList;
#endregion
#region Public Properties
/// <summary>
/// This is list box 1 items source with colors
/// </summary>
public ObservableCollection<string> ColorList
{
get { return mColorList; }
set
{
mColorList = value;
NotifyPropertyChanged(nameof(ColorList));
}
}
/// <summary>
/// This is list box 2 items with results
/// </summary>
public ObservableCollection<string> ItemList
{
get { return mItemList; }
set
{
mItemList = value;
NotifyPropertyChanged(nameof(ItemList));
}
}
#endregion
#region Constructor
public ViewModel()
{
// Initialization
ColorList = new ObservableCollection<string>() { "red", "blue", "yellow", "green" };
ItemList = new ObservableCollection<string>() { "not selected!" };
}
#endregion
#region Public Methods
/// <summary>
/// Called when selection is changed
/// </summary>
/// <param name="selectedItems"></param>
public void OnSelectionChanged(IEnumerable<string> selectedItems)
{
ItemList.Clear();
foreach (var item in selectedItems)
{
switch (item)
{
case "red":
ItemList.Add("apple");
ItemList.Add("sun");
break;
case "blue":
ItemList.Add("sea");
ItemList.Add("sky");
break;
}
}
}
#endregion
#region InterfaceImplementation
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
[ 1113]
Можно указать целочисленный литерал как долго суффиксом L.
Можно указать целочисленный литерал как долго долго суффиксным LL.
#include <iostream>
int main()
{
long long num = 600851475143LL;
std::cout << num;
}
Число равняется 600851475143, не является слишком большим для долгого длинного целого, но необходимо использовать суффикс LL при использовании длинных длинных констант (ULL для неподписанного долгого длинного целого):
unsigned long long int num = 600851475143ULL;
Смысл существования крупной целочисленной библиотеки должен представить целые числа, которые Ваш язык не может обработать исходно. Это означает, Вы не можете даже записать его как литерал. Вероятно, та библиотека имеет способ проанализировать строку как большое количество.
В более общем случае, когда Вы не можете приспособить свое число в длинном длинном, и можете жить с лицензией LGPL GNU (http://www.gnu.org/copyleft/lesser.html), я предложил бы пробовать Библиотеку Мультиточности GNU (http://gmplib.org/).
Это чрезвычайно быстро, записано в C и идет с очень прохладным C ++-wrapper-library.
Существует ли bigint lib для соединения в или bigint.cpp для компиляции?
Если Вы получаете неопределенные ссылочные ошибки для библиотеки сверхбольшого числа, Вы, вероятно, не связали ее. На Unix необходимо будет передать опцию как-lbigint. При использовании IDE необходимо будет найти настройки компоновщика и добавить библиотеку.
Что касается чисел, как был уже сказан, естественная константа значения по умолчанию к международному типу. Необходимо использовать LL/ll для получения длинного долго.
Первое, что нужно сделать в этом случае состоит в том, чтобы выяснить то, что является наибольшим числом, что можно вписываться в неподписанное длинное долго. Так как это - 64 бита, наибольшее число было бы 2^64-1 = 18446744073709551615, который больше, чем Ваше число. Затем Вы знаете о выполнении чего-то не так, и Вы смотрите на ответ Martin York, чтобы видеть, как зафиксировать его.