<Button x:Name="MyButton" Command="{Binding ClickCommand}"
CommandParameter="{Binding ElementName=MyButton}"/>
public class MainViewModel : BaseViewModel
{
public Command ClickCommand { get; set; }
public MainViewModel()
{
ClickCommand = new Command(ClickCommandExecute);
}
private void ClickCommandExecute(object obj)
{
Button button = obj as Button;
MessageBox.Show(button.ActualHeight.ToString() + " : " + button.ActualWidth);
}
}
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei ="http://schemas.microsoft.com/expression/2010/interactions"
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<ei:CallMethodAction MethodName="NoteList_GotFocus"
TargetObject="{Binding }"/>
</i:EventTrigger>
</i:Interaction.Triggers>
public void NoteList_GotFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is ListBoxItem lvi)
{
Note note = lvi.DataContext as Note;
MessageBox.Show(note.Title);
}
}
public partial class SecondWindow: Window
{
public SecondWindow(string text)
{
InitializeComponent();
CategoryText.Text = text;
}
}
SecondWindow window = new SecondWindow(CategoryLabel1.Text);
public partial class MainWindow : Window
{
Animation animation;
bool isOptionsOpen1 = false;
bool isOptionsOpen2 = false;
public MainWindow()
{
InitializeComponent();
HotKeys hk = new HotKeys(this);
animation = new Animation(this);
}
private void OpenOptions(object sender, RoutedEventArgs e)
{
animation.OpenOptions();
}
private void HideOptions(object sender, RoutedEventArgs e)
{
animation.HideOptions();
}
}
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Opacity="0.5" AllowsTransparency="True"
WindowStyle="None">
<Window.Resources>
<Style TargetType="RadioButton" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ToggleButton IsChecked="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"
Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" Width="50" Height="50" />
<RadioButton Grid.Column="1" Width="50" Height="50" />
<RadioButton Grid.Column="2" Width="50" Height="50" />
</Grid>
<RadioButton GroupName="Group1"/>
<RadioButton GroupName="Group1"/>
<RadioButton GroupName="Group1"/>
<RadioButton GroupName="Group2"/>
<RadioButton GroupName="Group2"/>
<RadioButton GroupName="Group2"/>
class HotKeys
{
private MainWindow window;
//Конструктор
public HotKeys(MainWIndow _window)
{
window = _window;
}
}
namespace Toolkits
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
HotKeys hk = new HotKeys(this);
}
}
}
<Window.Resources>
<ContextMenu x:Key="MyContextMenu">
<!--Ваше меню -->
</ContextMenu>
</Window.Resources>
<Grid>
<!-- колонки строки -->
<TextBox Tag="1" Grid.Column="1" Grid.Row="5" ContextMenu="{StaticResource MyContextMenu}"/>
<TextBox Tag="2" Grid.Column="2" Grid.Row="5" ContextMenu="{StaticResource MyContextMenu}"/>
</Grid>
<DataGrid Name="MyDataGrid" ItemsSource="{Binding Table}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="Button_Click">Open Form</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
private void Button_Click(object sender, RoutedEventArgs e)
{
TosterForm form = new TosterForm(((DataRowView)MyDataGrid.SelectedItem).Row.ItemArray[3].ToString());
form.ShowDialog();
}
DataTable Table{get; set;}
DataAdapter dataAdapter;
private void DeleteMethod(object obj)
{
var indexDataTable= //получаете здесь индекс из колонки "индекс"(например) выбранной строки
var indexDataGridRow = //тут индекс самой строки, чтобы удалить ее из DataTable, либо вообще DataTable заново получать
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = new SqlConnection(connectionString);
cmd.CommandText = "DELETE FROM YourTableName where id=" + indexDataTable;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
Table.Rows[indexDataGridRow].Delete();
Table.AcceptChanges();
dataAdapter.Update(Table);
}
После запуска программы в окне изображается две полосы прокрутки.
<Window x:Class="Toster.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Toster"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" MinWidth="200">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="15"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<Canvas Name="Field">
<Button Canvas.Left="120" Canvas.Top="150"
Height="50" Width="50" Click="Button_Click"/>
<Button Canvas.Left="250" Canvas.Top="180"
Height="50" Width="50" Click="Button_Click"/>
</Canvas>
<ScrollBar x:Name="VerticalScrollBar"
HorizontalAlignment="Right"
Grid.Column="1" Grid.Row="0"
Scroll="VerticalScrollBar_Scroll"/>
<ScrollBar x:Name="HorizontalScrollBar"
Orientation="Horizontal" VerticalAlignment="Bottom"
Grid.Column="0" Grid.Row="1"
Scroll="HorizontalScrollBar_Scroll"/>
</Grid>
</Window>
Наводя указатель мыши на одну из двух фигур, можно выбирать, какая из этих фигур связана с полосами прокрутки.
public partial class MainWindow : Window
{
public Point SelectedPoint { get; set; }
public Button SelectedButton { get; set; }
public MainWindow()
{
DataContext = this;
InitializeComponent();
VerticalScrollBar.IsEnabled = false;
HorizontalScrollBar.IsEnabled = false;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (SelectedButton != null)
SelectedButton.Content = "";
SelectedButton = sender as Button;
SelectedButton.Content = "X";
SelectedPoint = SelectedButton.TransformToAncestor(Field).Transform(new Point(0, 0));
VerticalScrollBar.Value = SelectedPoint.Y / Field.ActualHeight;
HorizontalScrollBar.Value = SelectedPoint.X / Field.ActualWidth;
VerticalScrollBar.IsEnabled = true;
HorizontalScrollBar.IsEnabled = true;
}
private void VerticalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
SelectedPoint = new Point(SelectedPoint.X, VerticalScrollBar.Value * Field.ActualHeight);
Canvas.SetTop(SelectedButton, SelectedPoint.Y);
}
private void HorizontalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
SelectedPoint = new Point(HorizontalScrollBar.Value * Field.ActualWidth, SelectedPoint.Y);
Canvas.SetLeft(SelectedButton, SelectedPoint.X);
}
}