我想在UWP项目中使用拆分器控件。但我在UWP平台上找不到分离器控件。 UWP中是否还有其他分离器控件?
答案 0 :(得分:1)
Microsoft开发社区编写了一个网格分割器,它是Microsoft.Toolkit.UWP.UI.Controls的一部分。到目前为止,这个控件还没有被添加到块包中,最终它将会......
https://github.com/Microsoft/UWPCommunityToolkit
还有一点需要注意的是,Grid Splitter控件仅适用于Windows 10周年更新及更高版本。
答案 1 :(得分:0)
没有拆分器作为控制它自己不存在。
但是你可以在这里Splitter找到一个在uwp中制作一个的音乐。
来自链接的代码:
XAML:
<Border x:Name="padResize_NavBar" Grid.Row="1" Grid.Column="0" Height="50" Width="50" HorizontalAlignment="Left" VerticalAlignment="Center" Background="LightGray" IsHitTestVisible="True" Opacity="0.5"
Margin="-25,0,0,0"
PointerPressed="padResize_NavBar_PointerPressed"
PointerEntered="padResize_NavBar_PointerEntered" PointerExited="padResize_NavBar_PointerExited" CornerRadius="25" RequestedTheme="Dark">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" >< ></TextBlock>
</Border>
C#:
#region [Resizing]
//========================< Region: [Resizing] >========================
#region Resizing_Globals
//========================< Resizing_Globals >========================
double ptrPoint_Offset_X = 0;
//private void fl_Check_Resizing_Exit(object sender, PointerRoutedEventArgs e)
//{
// //----------------< fl_Check_Resizing_Exit() >----------------
// if (is_Resizing_Thumbnails == true)
// { fl_Resizing_Stop(); }
// //----------------</ fl_Check_Resizing_Exit() >----------------
//}
//========================</ Resizing_Globals >========================
#endregion
#region Resize Thumbnails
//========================< Resize_Thumbnails >========================
bool is_Resizing_Thumbnails = false;
private void padResize_Thumbnails_PointerEntered(object sender, PointerRoutedEventArgs e)
{
//----------------< btnGridSplitter_ColumnResize_PointerEntered() >----------------
//Color on
padResize_Thumbnails.Opacity = 1;
//----------------</ btnGridSplitter_ColumnResize_PointerEntered() >----------------
}
private void padResize_Thumbnails_PointerPressed(object sender, PointerRoutedEventArgs e)
{
//----------------< btnGridSplitter_ColumnResize_PointerPressed() >----------------
//set StartFlag
if (is_Resizing_Thumbnails == false)
{
//*start only once. Pressed is called every time
is_Resizing_Thumbnails = true;
ptrPoint_Offset_X = e.GetCurrentPoint(padResize_Thumbnails).Position.X;
}
// ----------------</ btnGridSplitter_ColumnResize_PointerPressed() > ----------------
}
private void padResize_Thumbnails_PointerMoved(object sender, PointerRoutedEventArgs e)
{
//----------------< btnGridSplitter_ColumnResize_PointerMoved() >----------------
if (is_Resizing_Thumbnails == true)
{
//< Get Pointer and Point >
Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
Windows.UI.Input.PointerPoint ptrPoint = e.GetCurrentPoint(GridShow);
Windows.UI.Input.PointerPoint ptrPoint_Offset = e.GetCurrentPoint(padResize_Thumbnails);
//</ Get Pointer and Point >
//--< check if Mouse is released >--
//--< Check Mouse >--
if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
//-< check left mouse >-
if (ptrPoint.Properties.IsLeftButtonPressed == false)
{
//< released >
//*if release then stop resizing
fl_Resizing_Thumbnails_Stop();
return;
//</ released>
}
//-</ check left mouse click >-
}
//--< check mouse click >--
//--</ check if mouse is released >--
//< get Point >
//*relativ to GridShow
double posX = ptrPoint.Position.X - ptrPoint_Offset_X;
if (posX < 0) posX = 0;
//</ get Point >
//-< set Column-With >-
colThumbnails.Width = new GridLength(posX);
//-</ set Column-With >-
tbxStatus.Text = "ptrPoint.Position=" + ptrPoint.Position.X + " Offset=" + ptrPoint_Offset_X;
}
//----------------</ btnGridSplitter_ColumnResize_PointerMoved() >----------------
}
private void padResize_Thumbnails_PointerExited(object sender, PointerRoutedEventArgs e)
{
//----------------< btnGridSplitter_ColumnResize_PointerExited() >----------------
//Color off
padResize_Thumbnails.Opacity = 0.3;
//----------------</ btnGridSplitter_ColumnResize_PointerExited() >----------------
}
private void fl_Resizing_Thumbnails_Stop(object sender, PointerRoutedEventArgs e)
{
//----------------< fl_Resizing_Column_Stop() >----------------
//*event from XAML
fl_Resizing_Thumbnails_Stop();
//----------------</ fl_Resizing_Column_Stop() >----------------
}
private void fl_Resizing_Thumbnails_Stop()
{
//< marker on >
is_Resizing_Thumbnails = false;
//</ marker off >
//< Setting save>
Windows.Storage.ApplicationData.Current.LocalSettings.Values["actColumn_Thumbnails"] = colNavBar.ActualWidth;
//</ Setting save>
//----------------</ fl_Resizing_Column_Stop() >----------------
}
//========================</ Resize Thumbnails >========================
#endregion
#region Resize Navbar
//========================< Resize_NavBar >========================
bool is_Resizing_NavBar = false;
private void padResize_NavBar_PointerEntered(object sender, PointerRoutedEventArgs e)
{
//----------------< padResize_NavBar_PointerEntered() >----------------
//Color on
padResize_NavBar.Opacity = 1;
//----------------</ padResize_NavBar_PointerEntered() >----------------
}
private void padResize_NavBar_PointerPressed(object sender, PointerRoutedEventArgs e)
{
//----------------< padResize_NavBar_PointerPressed() >----------------
//set StartFlag
if (is_Resizing_NavBar == false)
{
//*start only once pressed is called every time
is_Resizing_NavBar = true;
ptrPoint_Offset_X = e.GetCurrentPoint(padResize_NavBar).Position.X;
}
// ----------------</ padResize_NavBar_PointerPressed() > ----------------
}
private void padResize_NavBar_PointerMoved(object sender, PointerRoutedEventArgs e)
{
//----------------< padResize_NavBar_PointerMoved() >----------------
if (is_Resizing_NavBar == true)
{
//< Pointer and Point check>
Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
Windows.UI.Input.PointerPoint ptrPoint = e.GetCurrentPoint(BaseGrid);
Windows.UI.Input.PointerPoint ptrPoint_Offset = e.GetCurrentPoint(padResize_NavBar);
//</ Pointer and Point check>
//--< check mouse released >--
//--< Mouse Click check>--
if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
//-< check left mouseclick >-
if (ptrPoint.Properties.IsLeftButtonPressed == false)
{
//< released>
//*if relesed stop resicing
fl_Resizing_NavBar_Stop();
return;
//</ released>
}
//-</ check left mouse >-
}
//--< Mouse click check >--
//--</ check if mouse is released >--
//< get Point >
//*relativ to GridShow
double posX = ptrPoint.Position.X - ptrPoint_Offset_X;
if (posX < 10) posX = 10;
//</ get Point >
//-< set Column-With >-
colNavBar.Width = new GridLength(posX);
//-</ set Column-With >-
tbxStatus.Text = "ptrPoint.Position=" + ptrPoint.Position.X + " Offset=" + ptrPoint_Offset_X;
}
//----------------</ btnGridSplitter_ColumnResize_PointerMoved() >----------------
}
private void padResize_NavBar_PointerExited(object sender, PointerRoutedEventArgs e)
{
//----------------< padResize_NavBar_PointerExited() >----------------
//Farbe ausschalten
padResize_NavBar.Opacity = 0.3;
//----------------</ padResize_NavBar_PointerExited() >----------------
}
private void fl_Resizing_NavBar_Stop(object sender, PointerRoutedEventArgs e)
{
fl_Resizing_NavBar_Stop();
}
private void fl_Resizing_NavBar_Stop()
{
//< marker off >
is_Resizing_NavBar = false;
//</ marker off >
//< Setting save>
Windows.Storage.ApplicationData.Current.LocalSettings.Values["actColumn_NavBar"] = colNavBar.ActualWidth;
//</ Setting speichern >
//----------------</ fl_Resizing_Column_Stop() >----------------
}
//========================</ Resize_NavBar >========================
#endregion
//========================</ Region: [Resizing] >========================
#endregion