我有一个要列出的日期列表。最初,我想到使用datepicker,但它没有最大天数或最大月数(令人难以置信),这是我的要求。
因此,我想生成自己的日期并将其呈现给用户。
下面是我要如何显示它
我目前正在使用列表框。我尝试了组合框,网格视图,但是所有这些都面临着相同的问题
问题
当日期在两条蓝线下时,我想将其设置为选中状态。我能想到的唯一方法是使用代码,方法是获取行的位置,然后获取列表框中每个项目的位置,以确定哪个属于该范围。
有没有xaml的方法可以做到这一点?
除了确定位置之外,还有其他逻辑吗?我发现这种逻辑非常粗糙。一个不错的选择是拥有一个碰撞箱或由这些线条表示的东西,当它被击中时,它就会被选中
提前致谢
最佳答案
因此,经过大约三天的摸索之后,我发现以下解决方案很有用
首先找到位于两条线之间的中点。 (找到水平中点,然后找到垂直中点)。我使用以下代码找到了中点
private void DetermineSelectionLineBoundaries()
{
if (SelectionBoundaryUpper == null || HorizontalScrollPanel == null)
{
return;
}
var transform = SelectionBoundaryUpper.TransformToVisual(Window.Current.Content);
_upperStart = transform.TransformPoint(new Point(0, 0));
_upperEnd = new Point(_upperStart.X + 100, _upperStart.Y);
var lowertransform = SelectionBoundaryLower.TransformToVisual(Window.Current.Content);
_lowerStart = lowertransform.TransformPoint(new Point(0, 0));
var midPointHorizontal = CalculateMidpoint(_upperStart, _upperEnd);
var midPointVertical = CalculateMidpoint(_lowerStart, _upperStart);
_midPoint = new Point(midPointHorizontal.X, midPointVertical.Y);
}
一旦有了,在每次滚动调用时
VisualTreeHelper.FindElementsInHostCoordinates(_midPoint, Window.Current.Content).ToList();
此功能将为您提供所有要素。老实说,我不仅仅获得该元素,我基本上将页面上所有垂直于该点放置在同一位置上的东西。也许我做错了。但好消息是我只得到一个列表框项目。如此容易遍历。
完成后,只需打开IsSelected标志。
希望这可以帮助某人
我找不到任何xaml方式来做到这一点。