//this = currentObject;
//typeof(this) == typeof(Reader);
var indexBinding = new Binding();
indexBinding.Mode = BindingMode.TwoWay;
//указываю подчненный контролл как источник данных
indexBinding.ElementName = "epubConrol";
indexBinding.Path = new PropertyPath("SelectedIndex");
//Очищаю свойство зависимостей и создаю привязку
currentObject.ClearValue(Reader.SelectedIndexProperty);
currentObject.SetBinding(Reader.SelectedIndexProperty, indexBinding);
<ListBox x:Name="lst1" SelectedIndex="{Binding ElementName=lst2, Path=SelectedIndex, Mode=TwoWay}">
<system:String>1 строка</system:String>
<system:String>2 строка</system:String>
</ListBox>
<ListBox Grid.Column="1" x:Name="lst2">
<system:String>1 строка</system:String>
<system:String>2 строка</system:String>
</ListBox>
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ItemsControl x:Name="itemsData">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl BorderBrush="Black" BorderThickness="1" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl BorderBrush="Black" BorderThickness="1" ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=.}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>
namespace WpfApplication1
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var my = new MyClass();
my.Data = new List<byte[][]>();
my.Data.Add(new byte[][] { new byte[] { 0, 1 }, new byte[] { 2, 3 }, new byte[] { 4, 5 } });
my.Data.Add(new byte[][] { new byte[] { 6, 7 }, new byte[] { 8, 9 }, new byte[] { 10, 11 } });
itemsData.ItemsSource = my.Data;
}
}
public class MyClass
{
public List<byte[][]> Data
{ get; set; }
}
}
System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml("Red");
System.Drawing.Color color = System.Drawing.Color.FromName("Red");
System.Drawing.Color wfColor = System.Drawing.Color.FromName("Red");
System.Windows.Media.Color color = System.Windows.Media.Color.FromArgb(wfColor.A,wfColor.R,wfColor.G,wfColor.B );
<ScrollViewer VerticalScrollBarVisibility="Auto" IsHitTestVisible="False" >
<TextBlock TextWrapping="Wrap" Text="{Binding FirstInformation}"/>
</ScrollViewer>
<ScrollViewer VerticalScrollBarVisibility="Auto" >
<TextBlock TextWrapping="Wrap" Text="{Binding FirstInformation}" MouseLeftButtonUp="TextBlock_MouseLeftButtonUp"/>
</ScrollViewer>
private void TextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var tb = sender as TextBlock;
// Нужно дополнительно обложиться проверками, что типы совпадают
((tb.Parent as ScrollViewer).Parent as RadioButton).IsChecked = true;
}
#include "stdafx.h"
class Program
{
static void Main(string[] args)
{
// Выделение памяти из неуправляемой области
// Получаем обычный указатель для использования в c/c++ функциях
var pComputerName = Marshal.AllocHGlobal(256);
// Вызываем описанную внешнюю функцию
// Она будет работать непосредственно с памятью по указателю
int size = 256;
GetComputerName(pComputerName, ref size);
// Переводим результат в управляемый вид
var str = Marshal.PtrToStringUni(pComputerName);
Console.WriteLine(str);
// Обязательно освобождаем выделенную память
Marshal.FreeHGlobal(pComputerName);
Console.ReadLine();
}
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern void GetComputerName(IntPtr pComputerName, ref int size);
}
std::regex pattern("[{](?:(\\w+):)*(\\w+)[}]");
TestContext.DataRow[0].ToString();